【发布时间】:2015-04-23 18:37:40
【问题描述】:
我对在实体框架中使用 Code First 方法相当陌生,而且我知道我与下面的实体有多对多关系,EF 将自动创建中间表:
class Post {
...
public virtual ICollection<Category> Categories {get; set;}
...
}
class Category {
...
public virtual ICollection<Post> Posts {get; set;}
...
}
但是,如果在中间表中我需要有额外的数据字段,一种可能的方法(我目前喜欢,也许是因为我不知道更好的方法)是定义我自己的新实体,例如:
class Posts_Categories {
public int Id {get; set;}
public int CategoryId {get; set;}
public int PostId {get; set;}
public string Exrtafield1 {get; set;}
public int ex extraField2 {get; set;}
...
public virtual Post Post {get; set;}
public virtual Category Category {get; set;}
}
使用这种方法,EF 确实创建了我的自定义中间表,但它也创建了另一个名为“PostsCategories”的自己的中间表,它只包含一个指向 Post_Id 的外键和另一个指向 Category_Id 的外键。
如何让它不创建额外的一个并使用我定义的那个? 这是管理具有额外数据字段的多对多关系的好方法吗?
【问题讨论】:
标签: asp.net-mvc ef-code-first many-to-many entity-framework-6