我们说我有以下三个表:
public class Book
{
public int Id { get; set; }
public string Title { get; set; }
public virtual ICollection<BookAuthor> BookAuthors { get; set; }
}
public class Author
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public virtual ICollection<BookAuthor> AuthorBooks { get; set; }
}
public class BookAuthor
{
public int Id { get; set; }
public int BookId { get; set; }
public Book Book { get; set; }
public int AuthorId { get; set; }
public Author Author { get; set; }
}
使用以下映射配置:
public BookAuthorConfiguration()
{
// BookAuthor has a composite key:
HasKey(a => new { a.BookId, a.AuthorId });
// BookAuthor has 1 Book, Books have many BookAuthor records
HasRequired(a => a.Book)
.WithMany(s => s.BookAuthors)
.HasForeignKey(a => a.BookId)
.WillCascadeOnDelete(false);
// BookAuthor has 1 Author, Author have many BookAuthor records
HasRequired(a => a.Author)
.WithMany(p => p.AuthorBooks)
.HasForeignKey(a => a.AuthorId)
.WillCascadeOnDelete(false);
}
我现在要做的是在我的交界处BookAuthor表中创建一本新书和一个新的注册表,我不知道微风自动做什么以及我自己要做什么。
如果已创建作者,我是否创建两个新实体,Book和BookAuthor,设置BookAuthor(BookId,AuthorId,Book,Author)的属性,然后推送新创建的Book实体的BookAuthors数组,或者我是这样做?
我希望我能为您提供足够的信息,如果不是让我知道缺少什么。
提前致谢!
答案 0 :(得分:1)
微风不支持&#34;多对多&#34;所以你必须将联结表作为一个实体公开。 EF将强制执行此操作,因为您添加了支持m-to-m关系的FK以外的属性(Id
)。
您必须自己在Breeze客户端上管理该联结实体。
在用户语音中有一个流行的Breeze支持m-to-m的请求。也就是说,我们并没有努力,我对尝试它的价值表示怀疑。
Search StackOverflow for "Breeze" and "many to many"你会发现很多讨论。