【发布时间】:2018-04-16 10:56:15
【问题描述】:
我的 .NET Core 项目中有两个具有多对多关系的实体:
书:
public class Book
{
[Key]
public int BookId { get; set; }
public string Name { get; set; }
public string AuthorName { get; set; }
public int YearOfPublishing { get; set; }
public LibraryType Type { get; set; }
public virtual ICollection<BookPublicHouse> PublicHouses { get; set; }
public Book()
{
PublicHouses = new Collection<BookPublicHouse>();
}
}
出版社:
public class PublicHouse
{
[Key]
public int PublicHouseId { get; set; }
public string PublicHouseName { get; set; }
public string Country { get; set; }
public virtual ICollection<BookPublicHouse> Books { get; set; }
public PublicHouse()
{
Books = new Collection<BookPublicHouse>();
}
}
我创建连接表:
public class BookPublicHouse
{
public virtual Book Book { get; set; }
public virtual PublicHouse PublicHouse { get; set; }
public int BookId { get; set; }
public int PublicHouseId { get; set; }
}
这里是上下文类:
public class LibraryContext : DbContext
{
public LibraryContext(DbContextOptions<LibraryContext> options)
: base(options)
{ }
public virtual DbSet<Book> Books { get; set; }
public virtual DbSet<PublicHouse> PublicHouses { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<BookPublicHouse>()
.HasKey(bp => new { bp.BookId, bp.PublicHouseId });
}
}
接下来我需要使用 CRUD 操作创建 Api,但我不知道如何创建它。我不知道如何让书包括本书包含的所有公共住宅
[Route("api/books")]
public class BookController : Controller
{
private LibraryContext _dbContext;
public BookController(LibraryContext context)
{
_dbContext = context;
this.mapper = mapper;
}
//get()
//get(id)
//create()
//update
//delete
}
【问题讨论】:
-
您还需要在 LibraryContext 中删除 DbSet 的
virtual属性。
标签: .net entity-framework asp.net-core entity-framework-core crud