Pergunta

Alguém realmente enviou um projeto do Entity Framework que mapeia O/R em classes conceituais que são bem diferentes das tabelas no armazenamento de dados?

Quero dizer, recolher tabelas de junção (M:M) em outras entidades para formar Conceptual classes que existem no domínio de negócios, mas são organizadas como múltiplas tabelas no armazenamento de dados.Todos os exemplos que vejo no MSDN têm pouco uso de herança, recolhimento de tabelas de junção em outras entidades ou recolhimento de tabelas de pesquisa em entidades.

Eu adoraria ouvir ou ver exemplos abaixo que suportam todas as operações CRUD que você normalmente esperaria fazer em um objeto de negócios.:

  1. Tabela de veículos e uma tabela de cores.Uma Cor pode aparecer em muitos Veículos (1:M).Eles formam a classe conceitual UsedCar que possui a propriedade Color.

  2. Tabelas Doctor, DoctorPatients e Pacientes (formam muitos para muitos).Os médicos têm muitos pacientes, os pacientes podem ter muitos médicos (M:M).Mapeie as duas classes conceituais Doutor (que possui uma coleção de Pacientes) e Pacientes (que possui uma coleção de Médicos).

Alguém viu/fez isso com CSDL E SSDL no Entity Framework?A CSDL não é boa se não mapear realmente para nada!

Foi útil?

Solução

Tentei usar o Entity Framework em um projeto existente (~60 tabelas, 3 com herança) apenas para ver do que se tratava.Minha experiência se resumiu a:

A superfície do designer é desajeitada.O mapeamento não é intuitivo e alguém deve ter pensado que ter várias janelas de ferramentas abertas ao mesmo tempo é aceitável.Demorou muito para criar manualmente um objeto e mapear os campos corretos – então ainda era estranho falar com ele a partir do código.Embora seja essencial ter algo para lidar com a comunicação do banco de dados, Eu sinto que entregar o controle para a EF foi muito mais difícil do que fazê-lo manualmente.

Às vezes, o designer simplesmente não carrega até você reiniciar o Visual Studio.Tenho certeza de que é apenas um bug, mas reiniciar o VS é irritante.

Todo o seu trabalho termina em um único arquivo. Eu odiaria mesclar várias edições de desenvolvedor.

O SQL resultante (observado através do Profiler) não foi muito bom.Eu realmente não investiguei o porquê, mas você seria pressionado a escrever algo pior na primeira tentativa.

Outras dicas

Entity Framework - Voto de desconfiança

Isso é tudo o que tenho a dizer...

Você quer dizer assim?

<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>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top