使用流畅的api,如何有条件地将同一数据类型的多个属性映射到单个表。
数据库模型:
目标是使用ProductListItem表并基于ListType(WHERE ProductListItem.ListTypeID = 1)将其应用于模型的多个属性(具有相同ProductListItem类型)。
public class Product
{
public int ProductID { get; set; }
public List<ProductListItem> Allergens { get; set; }
public List<ProductListItem> DoesNotContain { get; set; }
}
答案 0 :(得分:0)
我真的不认为你可以通过条件映射实现这一目标,但你可以作弊。
public List<ProductListItem> Allergens
{
get { return this.ProductListItems.Where(i => i.ListType.Name=="Allergens").ToList=();}
}
或者,您可以选择为具有相同基类的不同ListItem创建单个类,并使用TPH映射:http://weblogs.asp.net/manavi/inheritance-mapping-strategies-with-entity-framework-code-first-ctp5-part-1-table-per-hierarchy-tph
代码将是这样的:
class Product
{
public List<AllergenProductListItem> Allergens { get; set; }
public List<DoesNotContainListItem> DoesNotContain { get; set; }
}
关于项目类型的数量(很难添加新项目)显然不是动态的,但是你不想要解决方案,因为如果你想要一个新类型,你应该修改代码。