---
title: "ADO.NET Entity Framework и System.Data.SQLite - попытка глубокого погружения."
description: "Да, это была попытка, без особых успехов. Радужные перспективы малых веб-приложений, с собственным S..."
author: "tarakanoffth"
published: "2010-08-22T22:01:12+00:00"
modified: "2010-08-22T22:01:12+00:00"
locale: "ru"
canonical_url: "https://yvision.kz/post/ado-net-entity-framework-i-system-data-sqlite-popytka-glubokogo-pogruzheniya-67245"
markdown_url: "https://yvision.kz/post/ado-net-entity-framework-i-system-data-sqlite-popytka-glubokogo-pogruzheniya-67245/markdown"
site_name: "Yvision.kz"
---

# ADO.NET Entity Framework и System.Data.SQLite - попытка глубокого погружения.

> Да, это была попытка, без особых успехов. Радужные перспективы малых веб-приложений, с собственным S...

Да, это была попытка, без особых успехов.

Радужные перспективы малых веб-приложений, с собственным SQL-движком, мощными запросами на LINQ to Entities и "рисованием" красивых моделей баз данных, пропали по одной простой причине.

По порядку: Есть база [SQLite](http://www.sqlite.org/) (которая представляет из себя файл с расширением *.db), сборка [System.Data.SQLite](http://sqlite.phxsoftware.com/) (собственно сам движок базы данных) и Visual Studio (2008).

Поскольку сборка движка реализует [DbProviderFactory](http://msdn.microsoft.com/ru-ru/library/wda6c36e.aspx), то я без труда создал провайдер базы, соединение и набросал несколько стандартных запросов чтения, вставки, обновления и удаления (CRUD). Работает!

Но это вчерашний день, поскольку писать SQL-запросы "ручками", как-то неинтересно.

Поэтому добавил в проект модель [ADO.NET EDM](http://msdn.microsoft.com/ru-ru/library/bb738482%28VS.90%29.aspx). Мастер создания модели запросил подключение к базе, я создал ему SQLite поставщика. Мастер сказал "ОК, давай файл с базой данных". Указал путь. И мастер без проблем накидал мне красивые таблицы и связи в визуальном редакторе. Красота.

Теперь, у меня все таблицы в базе, представлены классами. Всё компилируется. Накидал наши стандартные запросы, используя технологию [LINQ to Entities](http://msdn.microsoft.com/ru-ru/library/bb386964.aspx). Теперь, всю "черную" работу (создание подключения, транзакции, длинные SQL-запросы, запихивание результатов в классы) сделает за меня эта самая технология.

Но мне пришлось идти в сад, по воле разработчиков из Майкрософт, поскольку всё, чего я мог добиться, это только читать базу. Остальное ну никак не хотело работать.

Причина кроется в весьма сомнительном классе [ObjectStateManager](http://msdn.microsoft.com/ru-ru/library/system.data.objects.objectstatemanager.aspx). На все попытки вставить/обновить/удалить он отвечает, что мол, ок, успешно! Но в базе ничего не меняет, мерзавец, негодяй...

Короче, возвращаясь во вчерашний день, пишу соединения, связывания и SQL-запросы вручную (под ржанье PHP-скрипачей).

Найдется время, скачаю [.NET Reflector](http://www.red-gate.com/products/reflector/) для "раскопок" сборки System.Data, чтобы понять, какого хрена, класс ObjectStateManager, не желает работать с движком SQLite.

---

Source: [https://yvision.kz/post/ado-net-entity-framework-i-system-data-sqlite-popytka-glubokogo-pogruzheniya-67245](https://yvision.kz/post/ado-net-entity-framework-i-system-data-sqlite-popytka-glubokogo-pogruzheniya-67245)