Для Entity Framework 4 Наследование таблиц по типам вам потребуется 2 вещи:
- «родительская» таблица и «дочерняя» таблица.«Дочерняя» таблица должна иметь FK для PK «родительской» таблицы.
- Вам необходимо установить наследование в EDM.Если все сделано правильно, вы должны увидеть связь стрелок между сущностями, а дочерняя таблица должна иметь текст в имени, указывающий, что она является родителем.
Теперь вы можете получить «Users» следующим образом: (iпредположим, что вы уже это делаете)
var allUsers = ctx.Users;
Теперь получение «Контактов» является особенным - потому что оно принадлежит набору сущностей «Пользователи» (это можно проверить, посмотрев свойства сущности «Контакты»).).
Вот как вы получаете контакты:
var allContacts = ctx.Users.OfType<Contact>();
Как это работает?Ну OfType - это метод расширения IEnumerable, который фильтрует все элементы на основе заданного типа.Так что это в основном цикл foreach:
foreach (var item in source)
{
if (item is Contact) result.Add(item);
}
Точно так же, как вы получаете профили:
var allProfiles = ctx.Users.OfType<Profile>();
Чтобы добавить новый профиль, снова - добавьте его в сущность "Пользователи"set:
var newProfile = new Profile { Name = "Foo" };
ctx.Users.AddObject(newProfile);
Кстати, Надеюсь эти таблицы не относятся к схеме членства ASP.NET.Если они есть, остановитесь прямо сейчас.Вы не должны отображать эти таблицы через EF.Получите доступ к функциональности через обычный API Членства.
HTH.