c# entity-framework .net-4.0 entity-framework-4.3

c# - Primero, el código de Entity Framework: cómo asignar una tabla plana a una clase con objetos anidados



entity-framework .net-4.0 (1)

Tengo el escenario donde los datos de una sola tabla deben estar en 2 objetos.

[Table] -Field1 -Field2 -Field3 -Field4

Y la clase se ve así:

[Class1] -Field1 -Field2 -Class2 object here [Class2] -Field3 -Field4

He establecido en la clase 1 el atributo [no mapeado] sobre la propiedad de la clase 2 que contiene el campo 3 y 4. También he agregado la configuración en el contexto de la base de datos:

public class ConfigurationClass1 : EntityTypeConfiguration<Class1> { public ConfigurationClass1 () { Property(o => o.Class2.Field3).HasColumnName("Field3"); Property(o => o.Class2.Field4).HasColumnName("Field4"); } }

El problema es que cuando trato de usar Entity Framework con la Class1 obtuve:

La propiedad ''Clase 2'' no es una propiedad declarada en el tipo ''Clase 2''. Verifique que la propiedad no se haya excluido explícitamente del modelo utilizando el método Ignorar o la anotación de datos NotMappedAttribute. Asegúrese de que sea una propiedad primitiva válida.

¿Cómo puedo usar el Código Entity Framework primero con una entidad que tiene un objeto anidado con toda la información en una tabla plana?


Puede hacer esto solo en caso de que Clase EF pueda ser reconocida por EF CF como un tipo complejo .

Brevemente:

  1. Class2 no debe contener ninguna referencia a otras Entidades EF. Solo para otros tipos complejos o tipos estándar
  2. Class2 no puede ser genérico. En este caso, como solución alternativa puede crear una clase anidada no genérica y usarla en su Class1.