Quantcast
Channel: eXpandFramework RSS
Viewing all articles
Browse latest Browse all 861

EF - Use of complex types that are not registered in DbContext and have no key property

$
0
0
I want to highlight a minor usability improvement built into v15.2 for our Entity Framework fans. This is all about a simpler integration of complex types without keys (learn more from EF docs...). 

The situation is already pretty much summarized in the Support Center, and here I just want to re-post the main details. To begin with, consider the following EF classes:


[C#]

public class Product {
public Product() {
PriceRange = new Range();
}
public Int32 ID { get; set; }
public String Name { get; set; }
public Range PriceRange { get; set; }
}
public class Range {
public Range() { }
public Decimal Low { get; set; }
public Decimal High { get; set; }
}
public class EFDemoDbContext : DbContext {
...
public DbSet<Product> Products { get; set; }
...
}

Note that the Range class has no key property and Entity Framework does not map this class to a separate database table. By default, properties of such a class persist in the table mapped to the parent Product class, where the Range type property is declared. So, the Product table will have the ID, NamePriceRange_Low and PriceRange_High columns:



Starting with v15.2.4 we recommend that you apply the ExpandObjectMembers attribute to properties of a complex type:

[C#]

[ExpandObjectMembers(ExpandObjectMembers.Always)]
public Range PriceRange { get; set; }
to be able to view and edit them in the XAF CRUD UI without any additional steps:


Should you require support for other use-case scenarios involving complex types, please let me know via the Support Center or here in comments. Thanks!

P.S.
Happy holidays!


Viewing all articles
Browse latest Browse all 861

Trending Articles