2011-04-30 154 views
1

可以说我有以下类:EF映射问题

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

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

我使用EF 4.1代码的第一个POCO类。我知道最简单的做法是将团队和食物集合作为用户的属性,这没问题,但从对象模型的角度来看,我希望它是自己的属性。任何想法我会如何实现这种类型的映射?

回答

3

我会说:你正在寻找的映射是不可能的,因为:

如果你不想类Interests映射到一个表时,它不能是一个实体和Interests财产在您的User类中不能是导航属性。为了避免EF解释Interests属性作为导航属性,你只有两个选择:

  • 将其标记为NotMapped - >没有帮助,因为你会失去从User的关系TeamFood完全
  • Interests类标记为ComplexType - >在您的示例中不可行,因为复杂类型为not allowed to contain navigation properties

这只是从我的理解水平。我忽视另一种选择并不是不可能的。

+0

EF不支持复杂类型的导航属性,这是自一开始就支持的竞争框架。我希望我能说我很惊讶... – 2011-04-30 18:22:16