LINQ to SQL Inheritance

6yrop

насколько я понимаю, в LINQtoSQL наследованием вообще не надо пользоваться. Оправданием этому служит то, что наследование идеологически неправильная вещь в контексте LINQtoSQL. Т.е. LINQtoSQL это (прям из названия) язык запросов для реляционных данных, а там такого понятия как наследование нет (ссылка).
Изначально вопрос был сугубо практический. Как синхронизовать схему БД и C# классы? Как написано в MSDN для не игрушечных проектов надо использовать утилиту командной строки SQLMetal. Но как выяснилось SQLMetal не поддерживает наследование.

timefim

Единственно что приходит в голову, это после каждой перегенерации руками добавлять
[Column(IsDiscriminator=true)]

6yrop

после каждой перегенерации
не, это не рабочий вариант в реальном проекте

6yrop

конечно, несложно написать свою генерилку, но че та не хочется :smirk:

timefim

Руками подразумевается написать какую нибудь утилиту и запускать ее в батнике.

timefim

Используй EF. Думаю с этим должно быть по проще.

6yrop

с чем? из первого знакомство с этой бодягой видно, что там еще какая-то промежуточная хрень есть — мепинг файл — которая из схемы бд генериться с помощью визарда. Визард стайл это же буээээээээ :crazy: , синхронизация превращается в кошмар.
Идеологически LINQtoSQL, имхо, более строгий. Цели EF ваще какие-то туманные..., возиться с очередным сторонней сырой мепинг библиотекой совсем желания нет, вот ежели комьюнити начнет ее активно юзать, в чем я сильно сомневаюсь, тогда еще стоит посмотреть. А пока это выглядит, как затыкание дыры — типа у майкрософта нет полноценного ORM.

timefim

С наследованием.
http://msdn.microsoft.com/en-us/library/bb387165.aspx

6yrop

С наследованием.
а где там храниться информация о наследовании, если все генериться по схеме БД? по твоей ссылке я этого не нашел.

timefim

Думается мне что оно хранится в csdl и пишется руками.

6yrop

Думается мне что оно хранится в csdl и пишется руками.
надо ли мерджить автосгенеренное с написанным руками? если надо, то как?

Alexander08

надо ли мерджить автосгенеренное с написанным руками? если надо, то как?
partial?

timefim

Использование глагола "думаю" при упоминании EF предполагало что ты изучишь этот вопрос и потом нам всем расскажешь о результатах.
Как минимум можно этот файл не генирить а писать руками.

6yrop

надо ли мерджить автосгенеренное с написанным руками? если надо, то как?
partial?
csdl это вроде не сишарп
Оставить комментарий
Имя или ник:
Комментарий: