gpt4 book ai didi

c# - ASP.NET EF6 - 2 个表和 1 个链接表

转载 作者:太空宇宙 更新时间:2023-11-03 15:39:01 25 4
gpt4 key购买 nike

我对 ASP.NET/EF 不是最流利的,所以我在尝试找到完成我需要完成的任务的最佳方法时遇到了一些困难。我正在尝试使用现有数据库创建 CRUD。

他们将 Employees 表设计为链接到 Contact_Info 表,而 Contact_Links 是中间人,而不是具有特定列的联系信息。

我有 3 个表:

员工
列:EmployeeID (PK)、FirstName、LastName

员工链接到联系人链接,通过 Contact_ID=EmployeeID

Contact_Links
列:ID (PK)、Contact_ID (FK)、Contact_Info_ID (FK)、类型

Contact_Links 通过 Contact_Info_ID=ID 链接到 Contact_Info

联系信息
列:ID(PK)、数据

Contact_Links 中的类型列决定了它是电子邮件地址、手机、传真等。所以它实际上不仅仅是一个 PK/FK 表。

也许最简单的方法是首先使用操作方法创建员工,然后在选项的详细信息页面中添加联系信息项?我不确定从哪里开始进行映射。

任何关于什么是做我正在尝试的最好方法的建议都将不胜感激!

最佳答案

如果您希望在同一个表单上添加员工及其联系信息,那么您应该使用 View 模型。

您的 View 模型会将您需要的 Employee 和 Contact 属性合并到一个类中。然后您将实现您的员工创建/查看/编辑屏幕以期望您的 EmployeeContactViewModel 并且您将有权访问您需要的所有属性。

Controller 上的保存/编辑方法将采用 EmployeeContactViewModel 作为类型。然后您将能够将其安排到正确的结构中以持久保存到您的数据库中。

看看这个问题的答案:What is ViewModel in MVC?

通过 google 快速了解如何使用 View Models,你就会飞起来!

编辑:感谢您进一步澄清您的问题。

将 View 模型连接到 Controller 后,您将不得不执行一系列插入操作。

Controller 方法如下所示:

    [HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(EmployeeContactViewModel employeecontactviewmodel)
{
if (ModelState.IsValid)
{
var employee = new EmployeeModel {
FirstName = employeecontactviewmodel.FirstName,
LastName = employeecontactviewmodel.LastName
};

var contact = new ContactInfoModel {
Data = employeecontactviewmodel.ContactInfo
};


db.Employee.Add(employee);
db.Contact.Add(contact);
db.SaveChanges();

var contactLink = new ContactLinkModel {
ContactID = employee.ID,
ContactInfoID = contact.ID
};

db.ContactInfo.Add(contactLink);
db.SaveChanges();

return RedirectToAction("Index");
}

return View(employeecontactviewmodel);
}

关于c# - ASP.NET EF6 - 2 个表和 1 个链接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30849033/

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