gpt4 book ai didi

c# - 我需要将交叉引用表与 Entity Framework 一起使用

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

我是 C# 编程新手,正开始学习 MVC4 框架。我决定为指导计划投入一个小型网络应用程序的想法。我在向系统添加学员时遇到了问题。我无法提供我需要帮助的表关系图,所以这里...

我有 3 个表:

地址:地址_id地址1地址2城市……

学员:学员编号名中间名字姓……

Mentee_Address:学员编号地址_id

当然 EF 不识别交叉引用表,所以 Mentee 的模型类和地址:

学员类(class):

public partial Class mentee
{
public mentee()
{
this.addresses = new HashSet<address>();
}

public int mentee_id { get; set; }
public string first_name { get; set; }
public string middle_name { get; set; }
public string last_name { get; set; }

public virtual ICollection<address> addresses { get; set; }
}

地址类:

public partial Class address
{
public address()
{
this.mentees = new HashSet<mentee>();
}

public int address_id { get; set; }
public string address1 { get; set; }
public string address2 { get; set; }
public string city { get; set; }

public virtual ICollection<mentee> mentees { get; set; }
}

在我的创建 View 中,我尝试添加学生和地址记录,同时保持与地址和受训者的关系完整。我读过 EF 在没有实际更新交叉引用表 Mentee_Address 的情况下执行此操作。如果可以,有人可以提供详细的解释,如果没有,我需要一种访问交叉引用表的方法,以便可以对其进行更新。

public ActionResult Create(ViewModels.MenteeViewModel menteeViewModel)
{
if (ModelState.IsValid)
{
db.mentees.Add(menteeViewModel.mentee);
db.addresses.Add(menteeViewModel.address);
db.SaveChanges();
}
}

最佳答案

您通过将 address 添加到 mentee.addresses 集合来创建 menteeaddress 之间的关系(或者反过来,没关系),像这样:

if (ModelState.IsValid)
{
menteeViewModel.mentee.addresses.Add(menteeViewModel.address);
db.mentees.Add(menteeViewModel.mentee);

db.SaveChanges();
}

在此示例中,您不需要将 address 显式添加到上下文中,因为它会在添加 mentee 的同时自动发生。该代码将向数据库中插入一个新的 mentee,将一个新的 address 和一个链接记录插入到链接表 Mentee_Address 中。我不确定您是否要同时插入 menteeaddress,但这也是您的原始代码会执行的操作。我上面的示例只是将链接记录添加到过程中。

关于c# - 我需要将交叉引用表与 Entity Framework 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18620358/

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