Вопрос

Кто-нибудь на самом деле реализовал проект Entity Framework, который выполняет сопоставление O/R в концептуальные классы, которые сильно отличаются от таблиц в хранилище данных?

Я имею в виду свертывание таблиц соединения (M:M) в другие объекты для формирования Концептуальный классы, которые существуют в бизнес-сфере, но организованы как несколько таблиц в хранилище данных.Во всех примерах, которые я вижу в MSDN, наследование мало используется, свертывание соединительных таблиц в другие сущности или свертывание таблиц поиска в сущности.

Мне бы хотелось услышать или увидеть приведенные ниже примеры, которые поддерживают все операции CRUD, которые вы обычно ожидаете выполнять над бизнес-объектом.:

  1. Таблица транспортных средств и таблица цветов.Цвет может присутствовать во многих транспортных средствах (1:M).Они образуют концептуальный класс UsedCar, имеющий свойство Color.

  2. Таблицы «Доктор», «ДокторПациенты» и «Пациенты» (формируют многие ко многим).У врачей много пациентов, у пациентов может быть много врачей (М:М).Составьте карту двух концептуальных классов Doctor (с коллекцией пациентов) и пациентов (с коллекцией Doctors).

Кто-нибудь видел/делал это с помощью CSDL И SSDL в Entity Framework?CSDL бесполезен, если он на самом деле ни с чем не сопоставляется!

Это было полезно?

Решение

Я попытался использовать Entity Framework в существующем проекте (около 60 таблиц, 3 с наследованием), просто чтобы посмотреть, в чем дело.Мой опыт сводился к следующему:

Дизайнерская поверхность неуклюжа.Сопоставление не интуитивно понятно, и кто-то, должно быть, подумал, что одновременное открытие нескольких окон инструментов приемлемо.Создание объекта вручную и сопоставление нужных полей занимало много времени — тогда еще было странно разговаривать с ним из кода.Хотя наличие чего-то, обеспечивающего связь с базой данных, имеет важное значение, Я считаю, что передача управления EF была гораздо более сложной задачей, чем передача этого вручную..

Иногда дизайнер просто не загружается, пока вы не перезапустите Visual Studio.Я уверен, что это просто ошибка, но перезапуск VS раздражает.

Вся ваша работа сохраняется в одном файле, мне бы не хотелось объединять несколько версий для разработчиков.

Результирующий SQL (просматриваемый через Profiler) оказался не очень хорошим.Я особо не вникал в причину, но с первой попытки вам придется написать что-нибудь похуже.

Другие советы

Entity Framework – вотум недоверия

Это все, что я могу сказать...

Вы имеете в виду вот так?

<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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top