Asp.net 多对多关系
我的实体是“书籍”和“类别”。每本书可以有多个类别,每个类别可以与多本书相关 为了实现这一点,我制作了如下模型:Asp.net 多对多关系,asp.net,entity-framework,breeze,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 {
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; }
}
// 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
公共课堂教材
{
[关键]
[数据成员]
公共Guid BookId{get;set;}
公共虚拟ICollection类别{get;set;}
}
公共类类别
{
[关键]
[数据成员]
公共Guid类别ID{get;set;}
}
我的DbContext如下所示:
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; }
}
// 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
//一些代码
公共数据库集书籍{get;set;}
公共数据库集类别{get;set;}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity()
.HasMany(c=>c.Categories)
.有很多
.Map(x=>
{
x、 MapLeftKey(“BookId”);
x、 MapRightKey(“类别ID”);
x、 ToTable(“图书分类映射”);
});
}
//一些代码
在客户端,图书实体不包含任何类别键
我想知道我的模型是否正确
已经创建了表BookCategoryMapping
,但似乎无法使用breeze将数据填充到表中
如何使用breeze创建图书实体并将类别推送到其中
谢谢。在服务器端,EF可以通过直接向BookCategoryMapping表中添加一行,在Book
和Category
之间创建关系。客户机上的微风无法做到这一点。它只能通过创建BookCategoryMapping
实体来创建关系,然后在调用saveChanges()
时将该实体发送到服务器
您需要将BookCategoryMapping
建模为一个实体