Pregunta

¿Alguien realmente ha enviado un proyecto de Entity Framework que realiza mapeo O/R en clases conceptuales que son bastante diferentes de las tablas en el almacén de datos?

Me refiero a contraer tablas de unión (M:M) en otras entidades para formar Conceptual clases que existen en el ámbito empresarial pero que están organizadas como varias mesas en el almacén de datos.Todos los ejemplos que veo en MSDN tienen poco uso de la herencia, el colapso de tablas de unión en otras entidades o el colapso de tablas de búsqueda en entidades.

Me encantaría escuchar o ver ejemplos de lo siguiente que admiten todas las operaciones CRUD que normalmente esperaría realizar en un objeto comercial:

  1. Tabla de vehículos y tabla de colores.Un Color puede aparecer en muchos Vehículos (1:M).Forman la clase conceptual UsedCar que tiene la propiedad Color.

  2. Tablas de Médico, MédicoPacientes y Pacientes (forman muchos a muchos).Los médicos tienen muchos pacientes, los pacientes pueden tener muchos médicos (M:M).Trace las dos clases conceptuales Doctor (que tiene una colección de Pacientes) y Pacientes (que tiene una colección de Médicos).

¿Alguien ha visto/hecho esto con CSDL Y SSDL en Entity Framework?¡El CSDL no sirve si no se asigna realmente a nada!

¿Fue útil?

Solución

Intenté usar Entity Framework en un proyecto existente (~60 tablas, 3 con herencia) solo para ver de qué se trataba.Mi experiencia se redujo a:

La superficie del diseño es torpe.El mapeo no es intuitivo y alguien debe haber pensado que tener varias ventanas de herramientas abiertas al mismo tiempo es aceptable.Tomó mucho tiempo crear manualmente un objeto y asignar los campos correctos; luego, todavía era extraño hablar con él desde el código.Si bien es esencial tener algo que maneje la comunicación de la base de datos, Siento que entregarle el control a EF fue mucho más complicado que hacerlo manualmente..

A veces, el diseñador simplemente no se carga hasta que reinicia Visual Studio.Estoy seguro de que es sólo un error, pero reiniciar VS es molesto.

Todo tu trabajo termina en un solo archivo, odiaría fusionar varias ediciones para desarrolladores.

El SQL resultante (observado a través del Profiler) no fue muy bueno.Realmente no profundicé en buscar por qué, pero te presionarían para que escribieras algo peor en un primer intento.

Otros consejos

Entity Framework: voto de censura

Eso es todo lo que tengo que decir...

¿Quieres decir así?

<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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top