powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF, DbContext, ObjectContext
25 сообщений из 106, страница 3 из 5
EF, DbContext, ObjectContext
    #38091723
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanАлексей К,

вы кстати свой шаблон так и не показали. Секрет фирмы ?А пожалуйста. :-)

Исходник во вложении. Пример использования:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
<#@ template hostSpecific="true" #>
<#@ output extension=".generated.cs" #>
<#@ include file="$(SolutionDir)\TextTemplates\Db\EF\EF.ttinclude" #>
<#@ include file="$(SolutionDir)\TextTemplates\Db\EF\MSSQL.ttinclude" #>
<#	
    ProviderName = "System.Data.SqlClient";
    ConnectionString = @"Data Source=TRACTOR\DEV5;Initial Catalog=Asubm;Integrated Security=True";	
    Namespace = "DbMain";
    DataContextName = "DbMainContext";
    WsNamespace = "WsnsDbMain.DbMain";
	
    LoadMetadata();
    SetViewMetadata();	
    GenerateModel();
#><#+ 	
	void SetViewMetadata()
	{
		Tables["sec_rolesTree"].Columns["RootID"].PKIndex = 1;
		Tables["sec_rolesTree"].Columns["ID"].PKIndex = 2;
	}	
#>
...
Рейтинг: 0 / 0
EF, DbContext, ObjectContext
    #38091727
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
...
Рейтинг: 0 / 0
EF, DbContext, ObjectContext
    #38091728
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вдогонку, навсякий...

Сделано на базе генератора от BLToolkit. Частично переписано, но кое что осталось.
...
Рейтинг: 0 / 0
EF, DbContext, ObjectContext
    #38091732
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanАлексей К,

погодите, может быть я не понимаю. Каким образом edmx будет тормозить?Ну просто мне кажется, что работать с диаграммой, содержащей 100+ квадратиков и XXX стрелочек несколько неудобно. :-)
...
Рейтинг: 0 / 0
EF, DbContext, ObjectContext
    #38091748
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

если вы про тормоза самого дизайнера, то может быть. у меня около 50 квадратиков.
...
Рейтинг: 0 / 0
EF, DbContext, ObjectContext
    #38091750
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КА пожалуйста. :-)

Пощупал...
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
[DataContract(Namespace = WsnsDbMain.DbMain)]
[Table("Catalogs", Schema = "dbo")]
public partial class Catalogs
{
	[Key, Column(Order = 1), DatabaseGenerated(DatabaseGeneratedOption.Identity), DataMember]
	public int? CatalogId { get; set; }

	[Required(ErrorMessage = DbMainContext.RequiredFieldMessage), DataMember]
	public string Title { get; set; }

	[DataMember]
	public int? Parent_CatalogId { get; set; }


	[ForeignKey("Parent_CatalogId")]
	public Catalogs Parent_CatalogId_Reference { get; set; }

	[InverseProperty("Catalog_CatalogId_Reference")]
	public List<Articles> Articles_Catalog_CatalogId_Reference { get; set; }

	[InverseProperty("Parent_CatalogId_Reference")]
	public List<Catalogs> Catalogs_Parent_CatalogId_Reference { get; set; }
}



За такие классы в прикладном коде, Лёша, с именованиями типа "Articles_Catalog_CatalogId_Reference", "Catalogs_Parent_CatalogId_Reference" и иже, хочется сходить в конюшню к конюху и одолжить у него плеть :)
...
Рейтинг: 0 / 0
EF, DbContext, ObjectContext
    #38091755
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЗа такие классы в прикладном коде, Лёша, с именованиями типа "Articles_Catalog_CatalogId_Reference", "Catalogs_Parent_CatalogId_Reference" и иже, хочется сходить в конюшню к конюху и одолжить у него плеть :)Я считаю такой принцип именования ассоциаций наиболее правильным!
...
Рейтинг: 0 / 0
EF, DbContext, ObjectContext
    #38091760
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЯ считаю такой принцип именования ассоциаций наиболее правильным!
Ты где такую траву берешь? :) Правильнее наименований у вот таких маппингов и быть ничего не может.
Во-вторых, за отсутствие плюрализации - сразу веником из избы!
...
Рейтинг: 0 / 0
EF, DbContext, ObjectContext
    #38091769
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУПравильнее наименований у вот таких маппингов и быть ничего не может.
Во-вторых, за отсутствие плюрализации - сразу веником из избы!Плюрализация только добавит беспорядка. Более того, я не верю в плюрализацию, которая работает всегда и везьде - это утопия. А раз это так - значит она нах не нужна. В BLToolkit-ном варианте она была (есть), я её убрал.

А если между таблицами несколько связей? Вручную будете имена придумывать? Это не наш метод!

По названию видно по каким полям идёт связь. Поначалу тоже было непривычно, потом привык, даже понравилось. :-)
...
Рейтинг: 0 / 0
EF, DbContext, ObjectContext
    #38091782
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КПлюрализация только добавит беспорядка.
Как-раз наоборот, она внесет ясность в именования и сделает модели более понятными.

Алексей КБолее того, я не верю в плюрализацию, которая работает всегда и везьде - это утопия. А раз это так - значит она нах не нужна. В BLToolkit-ном варианте она была (есть), я её убрал.
Ты должен верить в плюрализацию, верь мне. Она работает везде в 99% случаев, а где не работает, используется дефолтное имя. Во-вторых, не плюрализация виновата, а виноват кодирующая db-обезьянка кривожопница, которая нагавняла в именованиях базы.

Алексей КА если между таблицами несколько связей? Вручную будете имена придумывать? Это не наш метод!
Давать пользователю классов самому подправлять, как это сделано в edmx (без потери изменений при ран растоме). В твоем же случае этого нет, разве что выдумывать пользовательские настройки к шаблону, что есть грабли.

Алексей КПо названию видно по каким полям идёт связь. Поначалу тоже было непривычно, потом привык, даже понравилось. :-)
Это утопия. Да ну нах такой гавнокод, друх. Еще раз убедился, что либо человеческий DbFirst с мощным дизайнером и всеми его гибкими настройками, либо человеческий CodeFist для полностью мануального управления классами. Всё остально - какашка без соуса от конструкторов изобретателей, которым заняться нечем :)
...
Рейтинг: 0 / 0
EF, DbContext, ObjectContext
    #38091786
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУParent_CatalogId
А вот за такие названия полей в базе вообще нужно <censored/> в сортире. Сделайте нормальные имена полей, и ассоциации будут выглядеть лучше. :-)
...
Рейтинг: 0 / 0
EF, DbContext, ObjectContext
    #38091791
Lord British
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КnetivanДа, кодогенерацию из edmx попробуйтеНе. Не хочу пользоваться неудобным дизайнером. Кодогенерация напрямую из БД избавляет меня от этого неудобства. :-)
Если БД маленькая - с дизайнером ещё как-то можно. К сожалению, в моей практике такие не встречаются. :-)

netivanвы же любите эксперименты :)Только если от них есть для меня практическая польза. :-)

Я извиняюсь, а для чего вы всю схему БД тяните себе в приложение? Почему не создаете отдельные контексты под определенные наборы задач. И еще CSDL вроде как может быть разделена на отдельные файлы. Пока сам не глядел. Интересно выслушать мнения.
...
Рейтинг: 0 / 0
EF, DbContext, ObjectContext
    #38091797
Lord British
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КnetivanАлексей К,

погодите, может быть я не понимаю. Каким образом edmx будет тормозить?Ну просто мне кажется, что работать с диаграммой, содержащей 100+ квадратиков и XXX стрелочек несколько неудобно. :-)

В Power Designer например можно строить диаграммы по частям относящимся к определенным задачам. :) Ну и в студии вроде также не?
...
Рейтинг: 0 / 0
EF, DbContext, ObjectContext
    #38091798
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КА если между таблицами несколько связей? Вручную будете имена придумывать? Это не наш метод!
Давать пользователю классов самому подправлять, как это сделано в edmx (без потери изменений при ран растоме). В твоем же случае этого нет, разве что выдумывать пользовательские настройки к шаблону, что есть грабли.Видимо речь идёт о SetViewMetadata() . Это не "грабли", а полезная возможность. В представленном примере затесалось добавление первичного ключа к вьюхе, по понятным причинам БД его дать не может. Туда можно вставлять любые преобразования метаданных, в том числе можно явно указать имя ассоциации ( возможно придётся чуть поправить генератор ). Но мне это не надо, есть возможность однозначно расчитать имя ассоциации, что и сделано.
...
Рейтинг: 0 / 0
EF, DbContext, ObjectContext
    #38091802
Lord British
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУParent_CatalogId
А вот за такие названия полей в базе вообще нужно <censored/> в сортире. Сделайте нормальные имена полей, и ассоциации будут выглядеть лучше. :-)

А как правильно? ParentCatalogId или CatalogId? А как быть с СУБД в которых это будет выглядеть PARENTCATALOGID и CATALOGID?
...
Рейтинг: 0 / 0
EF, DbContext, ObjectContext
    #38091806
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУParent_CatalogId
А вот за такие названия полей в базе вообще нужно <censored/> в сортире. Сделайте нормальные имена полей, и ассоциации будут выглядеть лучше. :-)
А у меня нет таких полей, есть ParentCatalogId. Разницу чуешь? :) Можешь назвать как хочешь, хоть CatalogId.
...
Рейтинг: 0 / 0
EF, DbContext, ObjectContext
    #38091807
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lord BritishЯ извиняюсь, а для чего вы всю схему БД тяните себе в приложение? Почему не создаете отдельные контексты под определенные наборы задач.Нельзя делать запрос к сущностям, живущим в разных контекстах. Следовательно, может возникнуть необходимость дублирования классов-сущностей в разных дб-контекстах. А это, на мой взгляд, не хорошо.

Lord BritishИ еще CSDL вроде как может быть разделена на отдельные файлы. Пока сам не глядел. Интересно выслушать мнения.Там в новых версиях EF вроде как добавили возможность разделения диаграммы на части в рамках одного контекста. Ничего больше по этому поводу добавить не могу, не смотрел.
...
Рейтинг: 0 / 0
EF, DbContext, ObjectContext
    #38091809
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Квозможно придётся чуть поправить генератор
Мне не нужно постоянно править генератор, мне нужен полноценный настраиваемый механизм.
...
Рейтинг: 0 / 0
EF, DbContext, ObjectContext
    #38091810
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lord BritishА как правильно? ParentCatalogId или CatalogId? А как быть с СУБД в которых это будет выглядеть PARENTCATALOGID и CATALOGID?
Видимо он считает, что Catalogs_Parent_CatalogId_Reference лучше
...
Рейтинг: 0 / 0
EF, DbContext, ObjectContext
    #38091819
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУLord BritishА как правильно? ParentCatalogId или CatalogId? А как быть с СУБД в которых это будет выглядеть PARENTCATALOGID и CATALOGID?
Видимо он считает, что Catalogs_Parent_CatalogId_Reference лучше
Это пестдец, такую шнягу протаскивать в прикладном коде. Ну Лёша порадовал...

Поле MainDataSupplierId развернется в такую траву: SystemSuppliers_MainDataSupplier_MainDataSupplierId_Reference

Расстрелятьвсехнах (c)
...
Рейтинг: 0 / 0
EF, DbContext, ObjectContext
    #38091820
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lord BritishА как правильно? ParentCatalogId или CatalogId?Ну может ParentID ?
Lord BritishА как быть с СУБД в которых это будет выглядеть PARENTCATALOGID и CATALOGID?Ага, у меня была такая ситуация, когда тренировался с DB2, просто жесть. Могу только посоветовать пользоваться нормальными СУБД, коих одна - MSSQL.
...
Рейтинг: 0 / 0
EF, DbContext, ObjectContext
    #38091823
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей Квозможно придётся чуть поправить генератор
Мне не нужно постоянно править генератор, мне нужен полноценный настраиваемый механизм.Мне тоже не нужно его править, я его уже давно не правил. Между нами много общего.
...
Рейтинг: 0 / 0
EF, DbContext, ObjectContext
    #38091826
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУМСУпропущено...

Видимо он считает, что Catalogs_Parent_CatalogId_Reference лучше
Это пестдец, такую шнягу протаскивать в прикладном коде. Ну Лёша порадовал...

Поле MainDataSupplierId развернется в такую траву: SystemSuppliers_MainDataSupplier_MainDataSupplierId_Reference

Расстрелятьвсехнах (c) Даватьнормальныеименаполямблеать!
...
Рейтинг: 0 / 0
EF, DbContext, ObjectContext
    #38091830
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМежду нами много общего.
Через силу-таки выбросил поделие в облако

P.S. Я негодую ) Для себя еще раз окончательно понял, что либо полноценный ручной кодефирст, либо полноценный автоматический DbFirst с дизайнером.
...
Рейтинг: 0 / 0
EF, DbContext, ObjectContext
    #38091831
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей Кпропущено...

А вот за такие названия полей в базе вообще нужно <censored/> в сортире. Сделайте нормальные имена полей, и ассоциации будут выглядеть лучше. :-)
А у меня нет таких полей, есть ParentCatalogId. Разницу чуешь? :) Можешь назвать как хочешь, хоть CatalogId.В моём случае главное, чтобы в именах полей не было подчёркиваний. Если не нравится - можно придумать другой принцип именования связей. Мне этот нравится.
...
Рейтинг: 0 / 0
25 сообщений из 106, страница 3 из 5
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF, DbContext, ObjectContext
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]