Кто-нибудь действительно поставлял проект Entity Framework, который выполняет отображение O / R в концептуальные классы, которые сильно отличаются от таблиц в хранилище данных?
Я имею в виду свертывание таблиц соединения (M: M) с другими объектами для формирования классов Концептуальный, которые существуют в бизнес-домене, но организованы как несколько таблиц в хранилище данных. Во всех примерах, которые я вижу в MSDN, мало используется наследование, сворачивание таблиц соединений в другие сущности или свертывание таблиц поиска в сущности.
Я хотел бы услышать или увидеть примеры ниже, которые поддерживают все операции CRUD, которые вы обычно ожидаете выполнять с бизнес-объектом:
Таблица транспортных средств и таблица цветов. Цвет может появляться во многих транспортных средствах (1: M). Они образуют концептуальный класс UsedCar со свойством Color.
Таблицы Doctor, DoctorPatients и Patients (от многих ко многим). У врачей много пациентов, у пациентов может быть много врачей (М: М). Нарисуйте два концептуальных класса Doctor (у которого есть коллекция Patients) и Patients (у которой есть коллекция Doctors).
Кто-нибудь видел / делал это с CSDL и SSDL в Entity Framework? CSDL бесполезен, если он на самом деле ни с чем не отображается!





Я попытался использовать Entity Framework в существующем проекте (~ 60 таблиц, 3 с наследованием), просто чтобы понять, о чем идет речь. Мой опыт сводился к следующему:
Дизайнерская поверхность непростая. Отображение не интуитивно понятно, и кто-то, должно быть, подумал, что одновременное открытие нескольких окон инструментов приемлемо. На создание объекта и сопоставление нужных полей вручную уходило много времени - тогда еще было странно разговаривать с ним из кода. Хотя важно иметь что-то, обеспечивающее связь с базой данных, Я считаю, что передача управления EF была намного сложнее, чем делать это вручную..
Иногда дизайнер просто не загружается, пока вы не перезапустите Visual Studio. Я уверен, что это просто ошибка, но перезапуск VS раздражает.
Вся ваша работа сводится к одному файлу, мне бы не хотелось объединять несколько выпусков для разработчиков.
Полученный в результате SQL (просматриваемый через профилировщик) был не очень хорошим. Я не особо вдавался в подробности, почему, но вам придется написать что-нибудь похуже с первой попытки.
Как только я смог установить выпуск SP1 на свою рабочую машину и потратить на это час.
Вы имеете в виду это?
<edmx:ConceptualModels>
<Schema xmlns = "http://schemas.microsoft.com/ado/2006/04/edm" Namespace = "Model1" Alias = "Self">
<EntityContainer Name = "Model1Container" >
<EntitySet Name = "ColorSet" EntityType = "Model1.Color" />
<EntitySet Name = "DoctorSet" EntityType = "Model1.Doctor" />
<EntitySet Name = "PatientSet" EntityType = "Model1.Patient" />
<EntitySet Name = "UsedCarSet" EntityType = "Model1.UsedCar" />
<AssociationSet Name = "Vehicle_Color" Association = "Model1.Vehicle_Color">
<End Role = "Colors" EntitySet = "ColorSet" />
<End Role = "Vehicles" EntitySet = "UsedCarSet" /></AssociationSet>
<AssociationSet Name = "DoctorPatient" Association = "Model1.DoctorPatient">
<End Role = "Doctor" EntitySet = "DoctorSet" />
<End Role = "Patient" EntitySet = "PatientSet" /></AssociationSet>
</EntityContainer>
<EntityType Name = "Color">
<Key>
<PropertyRef Name = "ColorID" /></Key>
<Property Name = "ColorID" Type = "Int32" Nullable = "false" />
<NavigationProperty Name = "Vehicles" Relationship = "Model1.Vehicle_Color" FromRole = "Colors" ToRole = "Vehicles" /></EntityType>
<EntityType Name = "Doctor">
<Key>
<PropertyRef Name = "DoctorID" /></Key>
<Property Name = "DoctorID" Type = "Int32" Nullable = "false" />
<NavigationProperty Name = "Patients" Relationship = "Model1.DoctorPatient" FromRole = "Doctor" ToRole = "Patient" /></EntityType>
<EntityType Name = "Patient">
<Key>
<PropertyRef Name = "PatientID" /></Key>
<Property Name = "PatientID" Type = "Int32" Nullable = "false" />
<NavigationProperty Name = "Doctors" Relationship = "Model1.DoctorPatient" FromRole = "Patient" ToRole = "Doctor" />
</EntityType>
<EntityType Name = "UsedCar">
<Key>
<PropertyRef Name = "VehicleID" /></Key>
<Property Name = "VehicleID" Type = "Int32" Nullable = "false" />
<NavigationProperty Name = "Color" Relationship = "Model1.Vehicle_Color" FromRole = "Vehicles" ToRole = "Colors" /></EntityType>
<Association Name = "Vehicle_Color">
<End Type = "Model1.Color" Role = "Colors" Multiplicity = "1" />
<End Type = "Model1.UsedCar" Role = "Vehicles" Multiplicity = "*" /></Association>
<Association Name = "DoctorPatient">
<End Type = "Model1.Doctor" Role = "Doctor" Multiplicity = "*" />
<End Type = "Model1.Patient" Role = "Patient" Multiplicity = "*" /></Association>
</Schema>
</edmx:ConceptualModels>
Выглядит хорошо. Я всегда интересовался отображением этого CSDL на SSDL. Где начинается SSDL? Думаю, мне интересно, не является ли это просто чем-то большим, чем описание сущностей с помощью CSDL на пустой поверхности конструктора. Меня всегда интересовало отображение.
Entity Framework - вотум недоверия
Это все, что я могу сказать ...
Это было недавно или во время бета-тестирования? У меня был довольно неприятный опыт бета-тестирования, который не особо взволновал меня по поводу EF.