Entity Framework Code First : How to map flat table to class with nested objects

I have the scenario where the data from a single table must be in 2 objects.

[Table]
-Field1
-Field2
-Field3
-Field4

And the class look like this:

[Class1]
-Field1
-Field2
-Class2 object here

[Class2]
-Field3
-Field4

I have set in the Class1 the attribute [NotMapped] over the property of the Class2 which contain the field 3 and 4. I also have added the configuration in the Database Context:

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

The problem is that when I try to use Entity Framework with the Class1 I got :

The property 'Class2' is not a declared property on type 'Class2'. Verify that the property has not been explicitly excluded from the model by using the Ignore method or NotMappedAttribute data annotation. Make sure that it is a valid primitive property.

How can I use Entity Framework Code First with an Entity that has nested object with all the information in a flat table?

Answers


You can do like this only in case Class2 can be recognized by EF CF as a Complex type.

Briefly:

  1. Class2 shouldn't contain any references to other EF Entities. Only to other Complex types or standard types
  2. Class2 can't be generic. in this case as a workaround you can create a non-generic nested class and use it in your Class1.

Need Your Help

Web Service wrapper

c# .net wcf web-services

I am writing a dll that is referencing to some WCF service.

How can I prevent to include same file twice in an included file?

php include require

In a main index.php file, header.php is included. Both files must insert session.php, database.php etc. to run. But when header.php is included, there are two same require/include files, so there a...