Наследование в SQL Server и LINQ? - PullRequest
0 голосов
/ 27 февраля 2012

Обычно я создаю свои приложения, сначала создавая базу данных и используя LINQ to SQL для создания классов для меня. Но в моем текущем проекте я хочу попробовать наследование, и я не думаю, что возможно создать наследование в базе данных?

Таким образом, мне интересно, как бы я создал наследующий класс с SQL Server / LINQ, чтобы я мог сохранять / получать данные из моей базы данных. Например, если у меня есть Родитель:

- contact (id, name, telephone number, address, email..) 

и дети :

- customer(id, title, activity, discount, vat...)
- supplier (id, title, activity, vat, bankaccount_number, manager, expiration_day...)
- driver (id, first name, hire_date, fire_date, function, date of birth...)

Как бы я создал рабочее соединение с базой данных для этих классов? У меня нет большого опыта в создании классов, так как я обычно позволяю Visual Studio (LINQ) создавать их для меня.

Буду очень признателен за любую помощь, Спасибо:)

Ответы [ 2 ]

1 голос
/ 27 февраля 2012

Linq-to-Entities ( Entity Framework ) предоставляет эту функциональность "из коробки".

Вы можете спроектировать свои сущности как производные от родительского класса, а затем создать для них запросы следующим образом:

var customers = context.ContactSet.OfType<Customer>();
var suppliers = context.ContacctSet.OfType<Supplier>();
var drivers = context.ContactSet.OfType<Driver>();

Родительский класс и дочерние классы имеют общий ключ сущности. База данных должна иметь отношение (1: 0 или 1) между родительской таблицей и дочерними таблицами.

Я не думаю, что что-то подобное существует для Linq-to-SQL.

1 голос
/ 27 февраля 2012

Я бы создал другую таблицу: ContactTypes, чем я бы установил тип для каждого контакта.После этого я мог бы создать дополнительную таблицу: PropertiesToContactTypes, а после этого новую таблицу с именем: PropertiesToContacts.Я думаю, что это довольно простой и полезный подход.

Если вы только создаете вещи в программном коде, вы окажетесь в трудных ситуациях, когда вам придется иметь дело со сложными запросами.Linq to SQL - отличный инструмент, но для сложных запросов вы должны использовать хранимые процедуры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...