|
EF, DbContext, ObjectContext
|
|||
---|---|---|---|
#18+
netivanАлексей К, вы кстати свой шаблон так и не показали. Секрет фирмы ?А пожалуйста. :-) Исходник во вложении. Пример использования: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2012, 12:25 |
|
EF, DbContext, ObjectContext
|
|||
---|---|---|---|
#18+
netivanАлексей К, погодите, может быть я не понимаю. Каким образом edmx будет тормозить? http://stackoverflow.com/questions/6185918/entity-framework-4-1-for-large-number-of-tables-715 Конкретный ответLarge database is always something special. Any technology has some pros and cons when working with a large database. The problem you have encountered is the most probably related to building the model. When you start the application and use EF related stuff for the first time EF must build the model description and compile it - this is the most time consuming operation you can find in EF. Complexity of this operation grows with number of entities in the model. Once the model is compiled it is reused for the whole lifetime of the application (if you restart the application or unload application domain the model must be compiled again). You can avoid this by precompiling the model. It is done at design time where you use some tool to generate code from the model and you include that code into your project (it must be done again after each change in the model). For EDMX based models you can use EdmGen.exe to generate views and for code first based models you can use EF Power Tools CTP1. EDMX (the designer) was improved in VS 2010 SP1 to be able to work with large models but I still think the large in this case is around 100 entities / tables. In the same time you rarely need 715 tables in the same model. I believe that these 715 tables indeed model several domains so you can divide them into multiple models. The same is true when you are using DbContext and code first. If you model a class do you think that it is correct design when the class exposes 715 properties? I don't think so but that is exactly what your derived DbContext looks like - it has a public property for each exposed entity set (in the simplest mapping it means one property per table). Same entity can be used in multiple models but you should try to avoid it as much as possible because it can introduce some complexities when loading entity in one context type and using it in other context type. Code only = code first = Entity framework when you define mapping in the code without using EDMX. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2012, 12:26 |
|
EF, DbContext, ObjectContext
|
|||
---|---|---|---|
#18+
Вдогонку, навсякий... Сделано на базе генератора от BLToolkit. Частично переписано, но кое что осталось. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2012, 12:26 |
|
EF, DbContext, ObjectContext
|
|||
---|---|---|---|
#18+
netivanАлексей К, погодите, может быть я не понимаю. Каким образом edmx будет тормозить?Ну просто мне кажется, что работать с диаграммой, содержащей 100+ квадратиков и XXX стрелочек несколько неудобно. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2012, 12:28 |
|
EF, DbContext, ObjectContext
|
|||
---|---|---|---|
#18+
Алексей К, если вы про тормоза самого дизайнера, то может быть. у меня около 50 квадратиков. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2012, 12:37 |
|
EF, DbContext, ObjectContext
|
|||
---|---|---|---|
#18+
Алексей КА пожалуйста. :-) Пощупал... Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
За такие классы в прикладном коде, Лёша, с именованиями типа "Articles_Catalog_CatalogId_Reference", "Catalogs_Parent_CatalogId_Reference" и иже, хочется сходить в конюшню к конюху и одолжить у него плеть :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2012, 12:38 |
|
EF, DbContext, ObjectContext
|
|||
---|---|---|---|
#18+
МСУЗа такие классы в прикладном коде, Лёша, с именованиями типа "Articles_Catalog_CatalogId_Reference", "Catalogs_Parent_CatalogId_Reference" и иже, хочется сходить в конюшню к конюху и одолжить у него плеть :)Я считаю такой принцип именования ассоциаций наиболее правильным! ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2012, 12:39 |
|
EF, DbContext, ObjectContext
|
|||
---|---|---|---|
#18+
Алексей КЯ считаю такой принцип именования ассоциаций наиболее правильным! Ты где такую траву берешь? :) Правильнее наименований у вот таких маппингов и быть ничего не может. Во-вторых, за отсутствие плюрализации - сразу веником из избы! ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2012, 12:43 |
|
EF, DbContext, ObjectContext
|
|||
---|---|---|---|
#18+
МСУПравильнее наименований у вот таких маппингов и быть ничего не может. Во-вторых, за отсутствие плюрализации - сразу веником из избы!Плюрализация только добавит беспорядка. Более того, я не верю в плюрализацию, которая работает всегда и везьде - это утопия. А раз это так - значит она нах не нужна. В BLToolkit-ном варианте она была (есть), я её убрал. А если между таблицами несколько связей? Вручную будете имена придумывать? Это не наш метод! По названию видно по каким полям идёт связь. Поначалу тоже было непривычно, потом привык, даже понравилось. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2012, 12:49 |
|
EF, DbContext, ObjectContext
|
|||
---|---|---|---|
#18+
Алексей КПлюрализация только добавит беспорядка. Как-раз наоборот, она внесет ясность в именования и сделает модели более понятными. Алексей КБолее того, я не верю в плюрализацию, которая работает всегда и везьде - это утопия. А раз это так - значит она нах не нужна. В BLToolkit-ном варианте она была (есть), я её убрал. Ты должен верить в плюрализацию, верь мне. Она работает везде в 99% случаев, а где не работает, используется дефолтное имя. Во-вторых, не плюрализация виновата, а виноват кодирующая db-обезьянка кривожопница, которая нагавняла в именованиях базы. Алексей КА если между таблицами несколько связей? Вручную будете имена придумывать? Это не наш метод! Давать пользователю классов самому подправлять, как это сделано в edmx (без потери изменений при ран растоме). В твоем же случае этого нет, разве что выдумывать пользовательские настройки к шаблону, что есть грабли. Алексей КПо названию видно по каким полям идёт связь. Поначалу тоже было непривычно, потом привык, даже понравилось. :-) Это утопия. Да ну нах такой гавнокод, друх. Еще раз убедился, что либо человеческий DbFirst с мощным дизайнером и всеми его гибкими настройками, либо человеческий CodeFist для полностью мануального управления классами. Всё остально - какашка без соуса от конструкторов изобретателей, которым заняться нечем :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2012, 12:56 |
|
EF, DbContext, ObjectContext
|
|||
---|---|---|---|
#18+
МСУParent_CatalogId А вот за такие названия полей в базе вообще нужно <censored/> в сортире. Сделайте нормальные имена полей, и ассоциации будут выглядеть лучше. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2012, 12:58 |
|
EF, DbContext, ObjectContext
|
|||
---|---|---|---|
#18+
Алексей КnetivanДа, кодогенерацию из edmx попробуйтеНе. Не хочу пользоваться неудобным дизайнером. Кодогенерация напрямую из БД избавляет меня от этого неудобства. :-) Если БД маленькая - с дизайнером ещё как-то можно. К сожалению, в моей практике такие не встречаются. :-) netivanвы же любите эксперименты :)Только если от них есть для меня практическая польза. :-) Я извиняюсь, а для чего вы всю схему БД тяните себе в приложение? Почему не создаете отдельные контексты под определенные наборы задач. И еще CSDL вроде как может быть разделена на отдельные файлы. Пока сам не глядел. Интересно выслушать мнения. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2012, 13:01 |
|
EF, DbContext, ObjectContext
|
|||
---|---|---|---|
#18+
Алексей КnetivanАлексей К, погодите, может быть я не понимаю. Каким образом edmx будет тормозить?Ну просто мне кажется, что работать с диаграммой, содержащей 100+ квадратиков и XXX стрелочек несколько неудобно. :-) В Power Designer например можно строить диаграммы по частям относящимся к определенным задачам. :) Ну и в студии вроде также не? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2012, 13:03 |
|
EF, DbContext, ObjectContext
|
|||
---|---|---|---|
#18+
МСУАлексей КА если между таблицами несколько связей? Вручную будете имена придумывать? Это не наш метод! Давать пользователю классов самому подправлять, как это сделано в edmx (без потери изменений при ран растоме). В твоем же случае этого нет, разве что выдумывать пользовательские настройки к шаблону, что есть грабли.Видимо речь идёт о SetViewMetadata() . Это не "грабли", а полезная возможность. В представленном примере затесалось добавление первичного ключа к вьюхе, по понятным причинам БД его дать не может. Туда можно вставлять любые преобразования метаданных, в том числе можно явно указать имя ассоциации ( возможно придётся чуть поправить генератор ). Но мне это не надо, есть возможность однозначно расчитать имя ассоциации, что и сделано. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2012, 13:03 |
|
EF, DbContext, ObjectContext
|
|||
---|---|---|---|
#18+
Алексей КМСУParent_CatalogId А вот за такие названия полей в базе вообще нужно <censored/> в сортире. Сделайте нормальные имена полей, и ассоциации будут выглядеть лучше. :-) А как правильно? ParentCatalogId или CatalogId? А как быть с СУБД в которых это будет выглядеть PARENTCATALOGID и CATALOGID? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2012, 13:05 |
|
EF, DbContext, ObjectContext
|
|||
---|---|---|---|
#18+
Алексей КМСУParent_CatalogId А вот за такие названия полей в базе вообще нужно <censored/> в сортире. Сделайте нормальные имена полей, и ассоциации будут выглядеть лучше. :-) А у меня нет таких полей, есть ParentCatalogId. Разницу чуешь? :) Можешь назвать как хочешь, хоть CatalogId. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2012, 13:07 |
|
EF, DbContext, ObjectContext
|
|||
---|---|---|---|
#18+
Lord BritishЯ извиняюсь, а для чего вы всю схему БД тяните себе в приложение? Почему не создаете отдельные контексты под определенные наборы задач.Нельзя делать запрос к сущностям, живущим в разных контекстах. Следовательно, может возникнуть необходимость дублирования классов-сущностей в разных дб-контекстах. А это, на мой взгляд, не хорошо. Lord BritishИ еще CSDL вроде как может быть разделена на отдельные файлы. Пока сам не глядел. Интересно выслушать мнения.Там в новых версиях EF вроде как добавили возможность разделения диаграммы на части в рамках одного контекста. Ничего больше по этому поводу добавить не могу, не смотрел. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2012, 13:07 |
|
EF, DbContext, ObjectContext
|
|||
---|---|---|---|
#18+
Алексей Квозможно придётся чуть поправить генератор Мне не нужно постоянно править генератор, мне нужен полноценный настраиваемый механизм. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2012, 13:09 |
|
EF, DbContext, ObjectContext
|
|||
---|---|---|---|
#18+
Lord BritishА как правильно? ParentCatalogId или CatalogId? А как быть с СУБД в которых это будет выглядеть PARENTCATALOGID и CATALOGID? Видимо он считает, что Catalogs_Parent_CatalogId_Reference лучше ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2012, 13:10 |
|
EF, DbContext, ObjectContext
|
|||
---|---|---|---|
#18+
МСУLord BritishА как правильно? ParentCatalogId или CatalogId? А как быть с СУБД в которых это будет выглядеть PARENTCATALOGID и CATALOGID? Видимо он считает, что Catalogs_Parent_CatalogId_Reference лучше Это пестдец, такую шнягу протаскивать в прикладном коде. Ну Лёша порадовал... Поле MainDataSupplierId развернется в такую траву: SystemSuppliers_MainDataSupplier_MainDataSupplierId_Reference Расстрелятьвсехнах (c) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2012, 13:13 |
|
EF, DbContext, ObjectContext
|
|||
---|---|---|---|
#18+
Lord BritishА как правильно? ParentCatalogId или CatalogId?Ну может ParentID ? Lord BritishА как быть с СУБД в которых это будет выглядеть PARENTCATALOGID и CATALOGID?Ага, у меня была такая ситуация, когда тренировался с DB2, просто жесть. Могу только посоветовать пользоваться нормальными СУБД, коих одна - MSSQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2012, 13:13 |
|
EF, DbContext, ObjectContext
|
|||
---|---|---|---|
#18+
МСУАлексей Квозможно придётся чуть поправить генератор Мне не нужно постоянно править генератор, мне нужен полноценный настраиваемый механизм.Мне тоже не нужно его править, я его уже давно не правил. Между нами много общего. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2012, 13:14 |
|
EF, DbContext, ObjectContext
|
|||
---|---|---|---|
#18+
МСУМСУпропущено... Видимо он считает, что Catalogs_Parent_CatalogId_Reference лучше Это пестдец, такую шнягу протаскивать в прикладном коде. Ну Лёша порадовал... Поле MainDataSupplierId развернется в такую траву: SystemSuppliers_MainDataSupplier_MainDataSupplierId_Reference Расстрелятьвсехнах (c) Даватьнормальныеименаполямблеать! ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2012, 13:15 |
|
EF, DbContext, ObjectContext
|
|||
---|---|---|---|
#18+
Алексей КМежду нами много общего. Через силу-таки выбросил поделие в облако P.S. Я негодую ) Для себя еще раз окончательно понял, что либо полноценный ручной кодефирст, либо полноценный автоматический DbFirst с дизайнером. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2012, 13:17 |
|
EF, DbContext, ObjectContext
|
|||
---|---|---|---|
#18+
МСУАлексей Кпропущено... А вот за такие названия полей в базе вообще нужно <censored/> в сортире. Сделайте нормальные имена полей, и ассоциации будут выглядеть лучше. :-) А у меня нет таких полей, есть ParentCatalogId. Разницу чуешь? :) Можешь назвать как хочешь, хоть CatalogId.В моём случае главное, чтобы в именах полей не было подчёркиваний. Если не нравится - можно придумать другой принцип именования связей. Мне этот нравится. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2012, 13:17 |
|
|
start [/forum/topic.php?fid=17&msg=38091809&tid=1350146]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
137ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 290ms |
total: | 526ms |
0 / 0 |