Кто-нибудь использует Entity Framework * Хорошо *? - PullRequest
12 голосов
/ 12 сентября 2008

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

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

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

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

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

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

Ответы [ 3 ]

5 голосов
/ 12 сентября 2008

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

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

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

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

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

3 голосов
/ 18 сентября 2008

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

Это все, что я должен сказать ...

2 голосов
/ 12 сентября 2008

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

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...