EF Core 中的一对多关系

时间:2021-01-04 10:51:59

标签: asp.net-core entity-framework-core

我在学习 .net core mvc 时尝试研究实体框架,我想了解创建一对多表关系的最佳实践是什么:

以下是 2 个模型:

    public class BookCategory
    {
        [Key]
        public int IdCategory { get; set; }
        [Required]
        public string Description { get; set; }

    }

 public class Book
    {
        [Key]
        public int Id { get; set; }
        [Required]
        public string Name { get; set; }
        public string Author { get; set; }
        public string ISBN { get; set; }
        public int IdCategory { get; set; }
        public BookCategory BookCategory { get; set; }

    }


        // dBContext
        public DbSet<Book> Books { get; set; }
        public DbSet<BookCategory> BookCategories { get; set; }

我不确定这是否是在 mvc 中创建关系的最佳方式,因为在 update-database 调用后,我在“book”表中看到了“BookCategoryIdCategory”字段,但我认为这不正确。

你能帮我吗?

更新:我忘记更好地解释了:

在更新数据库后我喜欢看到的数据库中:

(table book)

    int Id (primary key)
    string Name 
    string Author
    string ISBN
    int IdCategory (relation with IdCategory of BookCategory

(table bookcategory)

int IdCategory (primary key relation with IdCategory of book)
string Description

如果可能,没有其他字段。

2 个答案:

答案 0 :(得分:0)

如果一个 BookCategory 可以有很多 Books,那么可以说它有一个 List of Books。

在您的图书类别类中,添加:

public List<Book> Books { get; set; }

答案 1 :(得分:0)

对于您的场景,您可以使用 ForeignKey 属性。ForeignKey 属性用于指定哪个属性是关系中的外键:

public class Book
{
    [Key]
    public int Id { get; set; }
    [Required]
    public string Name { get; set; }
    public string Author { get; set; }
    public string ISBN { get; set; }
    public int IdCategory { get; set; }
    [ForeignKey("IdCategory")]         //add this...
    public BookCategory BookCategory { get; set; }
}
public class BookCategory
{
    [Key]
    public int IdCategory { get; set; }
    [Required]
    public string Description { get; set; }
}