实体框架 - 如何映射这种关系

时间:2012-08-14 09:30:19

标签: entity-framework

我有:

用户:  -ID  -name

物品  -ID  -Title

所以我的配置很糟糕,Stackover流程中的优秀人员指出我是正确的。太棒了!问题是,我现在意识到我有一个额外的要求会改变一些事情。

在用户(班级)中,我有: public virtual ICollection Items {get;组; }

这会使用UserID和ItemID自动创建一个表(用于查找)。

问题是,我想标记一些项目有收藏夹(I.E如果使用收藏夹它),现在因为该表格是自动创建的&没有类,我不能在这个类/表上添加属性“IsFavourite”。那么我该如何做得很好呢?

1 个答案:

答案 0 :(得分:0)

EF多对多关系不允许额外的属性,因此最简单的方法可能是为您的链接表创建一个显式的实体对象,您可以根据需要进行修改。

public class User
{
    [Key]
    public int ID { get; set; }

    public virtual ICollection<UserItem> UserItems { get; set; }
}

public class Item
{
    [Key]
    public int ID { get; set; }

    public virtual ICollection<UserItem> UserItems { get; set; }
}

public class UserItem
{
    [Key]
    public int UserID { get; set; }
    [Key]
    public int ItemID { get; set; }

    [ForeignKey("UserID")]
    public virtual User User { get; set; }
    [ForeignKey("ItemID")]
    public virtual Item Item { get; set; }

    public bool IsFavourite { get; set; }
}