BreezeJs:多对多关系

时间:2014-02-05 18:10:25

标签: asp.net entity-framework breeze

我的实体是'书籍'& “类别”。每本书可以有多个类别,每个类别可以与几本书相关。

为了实现这一点,我制作了这样的模型:

public class Book
{
    [Key]        
    [DataMember]
    public Guid BookId { get; set; }

    public virtual ICollection<Category> Categories { get; set; }
}

public class Category
{
    [Key]
    [DataMember]
    public Guid CategoryId { get; set; }
}

我的DbContext是这样的:

// Some code

public DbSet<Book> Books { get; set; }
public DbSet<Category> Categories { get; set; }

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Book>()
        .HasMany(c => c.Categories)
        .WithMany()
        .Map(x =>
        {
            x.MapLeftKey("BookId");
            x.MapRightKey("CategoryId");
            x.ToTable("BookCategoryMapping");
         });

 }

// Some code

在客户端,图书实体不包含任何categories键???

我想知道我的模型是否正确。

已创建表BookCategoryMapping,但似乎我无法使用breeze填充数据。

我如何使用breeze创建一个图书实体并将类别推入其中?

感谢。

1 个答案:

答案 0 :(得分:1)

在服务器端,EF可以通过直接向BookCategoryMapping表添加行来在BookCategory之间创建关系。客户端上的微风无法做到这一点。它只能通过创建BookCategoryMapping实体来创建关系,然后在您致电saveChanges()时将其发送到服务器。

您需要将BookCategoryMapping建模为实体。