我有一个EF代码优先模型,其中一个表与其他表有几个一对多的关系:
public class Note
{
[Key]
public Guid Id { get; set; }
public string NoteText { get; set; }
public string Author { get; set; }
public DateTime? CreationDate { get; set; }
}
public class Foo
{
public Foo()
{
Notes = new HashSet<Note>();
}
[Key]
public Guid Id { get; set; }
public virtual ICollection<Note> Notes { get; set; }
// other properties ommited...
}
public class Bar
{
public Bar()
{
Notes = new HashSet<Note>();
}
[Key]
public Guid Id { get; set; }
public virtual ICollection<Note> Notes { get; set; }
// other properties ommited...
}
如您所见,Foo
和Bar
都有自己的Notes
列表,但Note
属于Foo
或 a Bar
。
当脚手架迁移时,EF会在Foo
表中为Bar
和Notes
创建一个外键,我认为这是不正确的。相反,我希望在Foo
和Notes
之间创建一个链接表,在Bar
和Notes
之间创建另一个链接表。
有没有办法自动执行此操作?或者我是否必须在代码优先实现中手动创建这些类?
答案 0 :(得分:0)
这已在other post中得到解答! 但为了节省一点谷歌搜索,你得到一对多的关联,这是正确的。您希望代码中存在多对多关系,因此您需要做的是:
:
public class Note
{
[Key]
public Guid Id { get; set; }
public string NoteText { get; set; }
public string Author { get; set; }
public DateTime? CreationDate { get; set; }
public DateTime? CreationDate { get; set; }
public virtual ICollection<Foo> Foos { get; set; }
public virtual ICollection<Bar> Bars { get; set; }
}
希望这有帮助