2011-04-30 152 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