以下代码之间有什么区别?
public class Album
{
public int Id { get; set; }
public string Title { get; set; }
public List<Gener> Gener { get; set; }
}
public class Gener
{
public int Id { get; set; }
public string Name { get; set; }
}
public class Albumcontext:DbContext
{
public DbSet<Album> Albums { get; set; }
public DbSet<Gener> Geners { get; set; }
}
public class Album
{
public int Id { get; set; }
public string Title { get; set; }
public Gener Gener { get; set; }
}
public class Gener
{
public int Id { get; set; }
public string Name { get; set; }
}
public class Albumcontext:DbContext
{
public DbSet<Album> Albums { get; set; }
public DbSet<Gener> Geners { get; set; }
}
我知道关系2实体必须使用代码2但是如何使用List&lt;&gt;或集合&lt;&gt;? 抱歉我的英文不好
答案 0 :(得分:1)
第一个创建关系“一个Album
可以有多个Genres
”,第二个创建“一个Album
只能有一个Genre
但是一个Genre
可能与许多Albums
“链接。
查看您的示例,您希望关系多对多,Album
可能有一个或多个Genres
,而Genre
可能与一个或多个{Albums
相关联1}}。
答案 1 :(得分:1)
在Album
课程的第一个区块中,您创建了一个属性Gener
,即Gener
个对象的列表 - 这意味着您希望一个Album
拥有多个Geners
{1}}:
public List<Gener> Gener { get; set; }
在同一个类的secound块中,您有一个Gener
类型的属性Gener
,因此它只指向类Gener
的一个对象。这意味着您希望Album
拥有一个Gener
。
public Gener Gener { get; set; }
顺便说一下,你有一个班级名字错字 - 我想你想要的是Genre,而不是Gener。
修改强>
要了解有关在实体框架中定义关系的更多信息,请查看this article。
答案 2 :(得分:0)
在第一个示例中,Album
和Gener
之间存在多对一关系。由于每个Gener
仅与Album
Gener
相关联,因此Album
获取Gener
的外键。
在第二个关系中,它只是一对一的关系,并且您在Album
模型中引用了Album
对象,因此Gener
获取{{1}}的外键}。