EF映射问题

时间:2011-04-30 16:08:21

标签: entity-framework mapping ef-code-first

假设我有以下课程:

public class User
{
    public int UserId { get;set;}
    public string Firstname { get;set;}
    public Interests Interests { get;set;}
}
public class Interests
{
    public IList<Team> FavoriteTeams { get;set;}
    public IList<Food> FavoriteFoods { get;set;}
}
public class Team{
    public int TeamId { get;set;}
    public string City {get;set;}
    public string Name { get;;set;}
}
public class Food{
    public int FoodId { get;set;}
    public string FoodName { get;set;}
}

在数据库级别,我想有以下表格:

用户 小组 食品 UserTeams UserFoods

基本上我想拥有用户实体的Interests属性,但没有单独的表格。

我首先使用EF 4.1代码POCO类。我知道最简单的事情是将Teams and Food集合作为属性放在User上,这没关系,但从对象模型的角度来看,我希望它是它自己的属性。知道如何实现这种映射吗?

1 个答案:

答案 0 :(得分:3)

我想说:你正在寻找的地图是不可能的,因为:

如果您不希望将类Interests映射到表,则它不能是实体,Interests类中的User属性不能是导航属性。为了避免EF将Interests属性解释为导航属性,您只能有两个选项:

  • 将其标记为NotMapped - &gt;没有用,因为你会失去从UserTeamFood完全
  • 的关系
  • Interests课程标记为ComplexType - &gt;在您的示例中不可能,因为复杂类型为not allowed to contain navigation properties

这仅仅来自我的理解水平。我不太可能忽视另一种选择。