|
Пара нубских вопросов по EF.
|
|||
---|---|---|---|
#18+
Добрый день. 1. Надо ли как-то специально закрывать connection при использовании EF. Или же просто юзать using() - и всё? Насколько я понял из примеров - использование using - строго обязательно? 2. Я работаю с данными в клиенте, потом залезаю в базу руками и меняю данные. В клиенте измененных данных нет (не появляются). Надо переинициализировать Context или его можно каким-то образом очистить? Можно ли так науськать EF, что определенные сущности он брал из базы при КАЖДОМ считывании? 3. Иногда бывает ситуация, что при SaveChanges() программа "уходит в себя". Интерфейсный поток типа работает, но дальше saveChanges() выполнение не продигается, но и ошибок никаких не выдает. Обычно это связано либо с отношениями many-2-many, либо с путаницей с объектами и контекстом. Как бы там ни было - можно ли узнать - что ей не нравится и почему прога сваливается в сбой? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2012, 04:45 |
|
Пара нубских вопросов по EF.
|
|||
---|---|---|---|
#18+
Совсем забыл 4. Используется model first. Приложение в стадии доводки, но должно уже работать у пользователей. Но генерируемый скрипт создает чистую БД, тогда как в базе полно вручную набитых данных. Как быть в этом случае? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2012, 04:51 |
|
Пара нубских вопросов по EF.
|
|||
---|---|---|---|
#18+
Monochromatique1. Надо ли как-то специально закрывать connection при использовании EF. Или же просто юзать using() - и всё? Насколько я понял из примеров - использование using - строго обязательно?В каких-то случаях желательно, в каких-то обязательно. Зависит от стратегии управления соединением с БД. Monochromatique2. Я работаю с данными в клиенте, потом залезаю в базу руками и меняю данные. В клиенте измененных данных нет (не появляются). Надо переинициализировать Context или его можно каким-то образом очистить?Создать новый. MonochromatiqueМожно ли так науськать EF, что определенные сущности он брал из базы при КАЖДОМ считывании?Да. Monochromatique3. Иногда бывает ситуация, что при SaveChanges() программа "уходит в себя". Интерфейсный поток типа работает, но дальше saveChanges() выполнение не продигается, но и ошибок никаких не выдает. Обычно это связано либо с отношениями many-2-many, либо с путаницей с объектами и контекстом. Как бы там ни было - можно ли узнать - что ей не нравится и почему прога сваливается в сбой?Он не любит большое количество записей в кэше. Monochromatique4. Используется model first. Приложение в стадии доводки, но должно уже работать у пользователей. Но генерируемый скрипт создает чистую БД, тогда как в базе полно вручную набитых данных. Как быть в этом случае?Очевидно, после генерации добавить данные в базу любым доступным способом. А лучше распространять программу с заранее созданной пустой ( содержащей данные только классификаторов ) базой. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2012, 08:47 |
|
Пара нубских вопросов по EF.
|
|||
---|---|---|---|
#18+
1. Правильно ли я понял, что создание ОДНОГО экземпляра контекста и хранение его "всю дорогу" - это неправильная политика? То есть - нужна инфа из базы - создали контекст, получили инфу, обработали, потом закрыли. Так? 1.1 Что делать, если контекст уже нужно/можно закрыть, но полученные сущности необходимо сохранить для дальнейшей работы? Что я потеряю, если закрою контекст? Если, скажем, мне понадобится их сохранить - то мне нужно будет создать новый контекст и присоединить ЭТИ сущности к нему? 3. Иногда бывает ситуация, что при SaveChanges() программа "уходит в себя". Интерфейсный поток типа работает, но дальше saveChanges() выполнение не продигается, но и ошибок никаких не выдает. Обычно это связано либо с отношениями many-2-many, либо с путаницей с объектами и контекстом. Как бы там ни было - можно ли узнать - что ей не нравится и почему прога сваливается в сбой? -- Он не любит большое количество записей в кэше. Что значит "не любит"? Как это, пардон, не любит? У меня там две записи, например. И потом вопорс скорее про то - КАК УВИДЕТЬ ошибку. -- "Очевидно, после генерации добавить данные в базу любым доступным способом." Допустим, у пользователей база - 20 гигобайт. Я добавляю 15 таблиц, через редактирование модели. Какие варианты? Или же надо редактировать саму базу данных ONLY & СТРОГО, а потом делать update модели? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2012, 11:22 |
|
Пара нубских вопросов по EF.
|
|||
---|---|---|---|
#18+
Monochromatique, MonochromatiqueПравильно ли я понял, что создание ОДНОГО экземпляра контекста и хранение его "всю дорогу" - это неправильная политика? Это прямой путь к проблемам. Ибо контекст берёт себе дорогие системные ресурсы, которые надо освобождать как можно скорее. Одна из самых масштабных бед - забытая открытая транзакция. Рассматривайте контекст как Unit of Work. Поработали, зафиксировали работу, закрыли контекст. Для следующей работы открыли новый контекст. Вопрос только в правильном определении границ Unit Of Work. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2012, 11:28 |
|
Пара нубских вопросов по EF.
|
|||
---|---|---|---|
#18+
Monochromatique1. Правильно ли я понял, что создание ОДНОГО экземпляра контекста и хранение его "всю дорогу" - это неправильная политика? То есть - нужна инфа из базы - создали контекст, получили инфу, обработали, потом закрыли. Так?Да Monochromatique1.1 Что делать, если контекст уже нужно/можно закрыть, но полученные сущности необходимо сохранить для дальнейшей работы? Что я потеряю, если закрою контекст? Если, скажем, мне понадобится их сохранить - то мне нужно будет создать новый контекст и присоединить ЭТИ сущности к нему?Да Monochromatique3. Иногда бывает ситуация, что при SaveChanges() программа "уходит в себя". Интерфейсный поток типа работает, но дальше saveChanges() выполнение не продигается, но и ошибок никаких не выдает. Обычно это связано либо с отношениями many-2-many, либо с путаницей с объектами и контекстом. Как бы там ни было - можно ли узнать - что ей не нравится и почему прога сваливается в сбой? -- Он не любит большое количество записей в кэше. Что значит "не любит"? Как это, пардон, не любит? У меня там две записи, например. И потом вопорс скорее про то - КАК УВИДЕТЬ ошибку.Тогда не знаю. У меня он повис, когда в кэше было ~8000 записей. Зависаний по другим причинам не наблюдалось. Monochromatique-- "Очевидно, после генерации добавить данные в базу любым доступным способом." Допустим, у пользователей база - 20 гигобайт. Я добавляю 15 таблиц, через редактирование модели. Какие варианты?Править базу рукописным DDL-скриптом. MonochromatiqueИли же надо редактировать саму базу данных ONLY & СТРОГО, а потом делать update модели?Типа того. Главное, чтобы модель генерировалась по БД а не наоборот. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2012, 11:51 |
|
Пара нубских вопросов по EF.
|
|||
---|---|---|---|
#18+
Алексей КMonochromatique1.1 Что делать, если контекст уже нужно/можно закрыть, но полученные сущности необходимо сохранить для дальнейшей работы? Что я потеряю, если закрою контекст? Если, скажем, мне понадобится их сохранить - то мне нужно будет создать новый контекст и присоединить ЭТИ сущности к нему?Да Присоединяюсь к этому вопросу. Полный граф объекта получен в одном контексте, одно из навигационных свойств в другом контексте. Это навигационное свойство присваиваем одному из свойств нашего объекта. Сохранение происходит в другом контексте. Вопрос: как присоединить отсоединенный объект со всеми навигационными свойствами и вложенными коллекциями к контексту. Вобщем нужно присоединить новому контексту полный граф объекта, после чего вызывать SaveChanges и увидеть, что одним коннектом и несколькими sql-запросами к БД сохранился бизнес-объект. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2012, 23:48 |
|
Пара нубских вопросов по EF.
|
|||
---|---|---|---|
#18+
GFX, Я конечно не открою Америку, но: чем успешно преодолевать трудности, лучше их себе не создавать. Вместо скрещивания разноконтекстных объектов, лучше работать в одном контексте, пока работа не будет завершена. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2012, 00:16 |
|
Пара нубских вопросов по EF.
|
|||
---|---|---|---|
#18+
SolYUtor, блин, они датасет ругают :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2012, 13:34 |
|
Пара нубских вопросов по EF.
|
|||
---|---|---|---|
#18+
SolYUtorGFX, Я конечно не открою Америку, но: чем успешно преодолевать трудности, лучше их себе не создавать. Вместо скрещивания разноконтекстных объектов, лучше работать в одном контексте, пока работа не будет завершена.+1 Единственная необходимость работы с разными контекстами - чтение и сохранение данных в разных сессиях ( разные http-запросы, разные buton_click и т. п. ). А при сохранении в другой сессии соответствующим образом присоединить все объекты вроде как не проблема. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2012, 14:38 |
|
|
start [/forum/topic.php?fid=17&fpage=37&tid=1350463]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
9ms |
get forum data: |
1ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 122ms |
0 / 0 |