gpt4 book ai didi

c# - 使用 EF 插入具有多对多关系的操作

转载 作者:太空狗 更新时间:2023-10-29 17:31:14 26 4
gpt4 key购买 nike

我有两个模型类:

public class Candidate
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<Job> Jobs { get; set; }
}

public class Job
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<Candidate> Candidates { get; set; }
}

我的 DbContext 名称是 JobsContext。

上面的代码为我生成了 3 个表 Candidates、Jobs 和 CandidatesJobs(由 EF 自动生成)

现在我在 Jobs 表中有记录:Id = 1, Name = "Sales": Id = 2, Name = "Engineer"。

我想将我将插入到 Candidates 表中的新 Candidate 与 Jobs 表中的 2 条记录相关联。

在插入求职者之前,我知道 Jobs 表的 ID,我不想调用数据库以从 Jobs 表中获取更多详细信息。

如何使用 Entity Framework 5 执行此操作?

最佳答案

这个怎么样?

Job salesJob; // already fetched from db
Job engineerJob; // already fetched from db

Candidate candidate = new Candidate();
candidate.Name = "John Doe";
candidate.Jobs = new List<Job>(); // you could also do this in the constructor of Candidate
candidate.Jobs.Add(salesJob);
candidate.Jobs.Add(engineerJob);

context.SaveChanges();

这仅在您已经从 DbContext 的同一实例中的数据库中获取作业时有效,否则 EF 将认为这些作业是“新的”并尝试插入它们。如果您只有 ID,可以尝试以下操作:

var salesJob = new Job { Id = salesJobId };
var engineerJob = new Job { Id = engineerJobId };

context.Jobs.Attach(salesJob);
context.Jobs.Attach(engineerJob);

candiate.Jobs.Add(salesJob);
candiate.Jobs.Add(engineerJob);
context.SaveChanges();

关于c# - 使用 EF 插入具有多对多关系的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19130983/

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