gpt4 book ai didi

c# - 需要使用Seed方法向映射表添加数据吗?

转载 作者:行者123 更新时间:2023-11-29 11:36:54 25 4
gpt4 key购买 nike

我正在尝试了解有关使用 Entity Framework 和代码优先创建数据库表的更多信息。下面是 Migrations/Configuration.cs 文件中 Seed 方法的一个简短示例。

这两个表具有多对多关系,Visual Studio 创建了一个名为 ResourceProject 的新表,但该表是空的,我想知道是否必须向该表添加 ID 等数据像其他表一样在种子中吗?我想像 ResourceProject 这样的映射表的要点是使用它,而不是在读写数据库时使用 ResourceProject 表! ?

ResourceProject表仅包含ResourceProject的ID

            // Add Projects
context.Projects.AddOrUpdate(x => x.Name,
new Project()
{
ID = 1,
Name = "Project 1",
CompanyID = 3
});

// Add Resources
context.Resources.AddOrUpdate(x => x.FirstName,
new Resource()
{
ID = 1,
FirstName = "Linda",
LastName = "West",
EmployeeNumber = 1,
email = "linda.west@mail.com"
});

最佳答案

我假设您的项目实体上有一个资源集合和/或您的资源实体上有一个项目集合。例如:

public class Project
{
// Other properties

public ICollection<Resource> Resources { get; set; }
}

public class Resource
{
// Other properties

public ICollection<Project> Projects { get; set; }
}

要在 ResourceProject 表中播种数据,您需要将一个项目添加到上述集合属性之一:

var project = new Project();
project.Resources.Add(new Resource());

// OR

var resource = new Resource();
resource.Projects.Add(new Project());

另一种可能性是您有一个显式的 ResourceProject 实体。在这种情况下,资源和项目实体上的集合属性将相同:

public ICollection<ResourceProject> { get; set; }

这同样适用 - 您需要显式地将一个项目添加到集合中以播种数据。

**编辑**

根据评论,如果您想要“速记”版本,您可以像这样播种实体:

// TODO: set all required properties (EmployeeNumber etc)
var lindaResource = new Resource { FirstName = "Linda", LastName = "West" };
var joeResource = new Resource { FirstName = "Joe", LastName = "East" };

context.resource.AddOrUpdate(x => x.FirstName,
lindaResource,
joeResource);

context.Projects.AddOrUpdate(x => x.Name,
new Project()
{
ID = 1,
Name = "Project 1",
CompanyID = 3,
Resources = new List<Resource> { lindaResource }
},
new Project()
{
ID = 2,
Name = "Project 2",
CompanyID = 3,
Resources = new List<Resource> { lindaResource, joeResource }
});

关于c# - 需要使用Seed方法向映射表添加数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36426178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com