0

下面的代码有什么区别?

 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<> 或 Collection<>?
对不起,我的英语不好

4

3 回答 3

1

第一个创建关系“一个Album可以有很多Genres”,第二个创建“一个Album可以只有一个Genre,但一个Genre可以与多个链接Albums”。

查看您的示例,您可能希望具有多对多关系,Album可能有一个或多个Genres,并且Genre可能与一个或多个链接Albums

于 2013-02-11T12:50:37.243 回答
1

在第一个块中,您在Album课堂上创建一个属性Gener,即Gener对象列表 - 这意味着您希望一个Album有很多Geners

public List<Gener> Gener { get; set; }

在同一类的第二个块中,您有一个Gener类型的属性Gener,因此它仅指向一个类对象Gener。这意味着你想Album拥有一个Gener.

public Gener Gener { get; set; }

顺便说一句,你的类名有错别字——我想你想要的是 Genre,而不是 Gener。

编辑:

要了解有关在实体框架中定义关系的更多信息,请查看这篇文章

于 2013-02-11T12:52:52.313 回答
0

Album在第一个示例中,和之间存在多对一关系Gener。由于每个Gener都只链接一个AlbumGener所以获取外键Album

在第二种情况下,它只是一对一的关系,并且您Gener在模型中引用了一个对象Album,因此Album获取Gener.

于 2013-02-11T12:51:31.500 回答