【发布时间】:2018-08-20 02:57:20
【问题描述】:
我想要达到的效果是这样的:
- 在视图中填写表格
-
将数据保存到带有列的table1中:
Id|OperationNumber|Name|ContactNotable1
Id是主键 -
将数据保存到带有列的table2中:
ReferenceId|OperationNumberReferenceId是数据类型uniqueidentifier的主键
两个表中的“OperationNumber”列是相关的。当数据保存在table1中时,OperationNumber也会连同自动生成的ReferenceId(uniqueidentifier)一起保存在table2中
检索过程是:
- 输入
ReferenceId作为搜索 - 在结果视图中显示 table1 和 table2 中的所有详细信息
这就是我的问题,如何在两个表中保存和检索数据?
这是我目前拥有的:
控制器:
public ActionResult Create()
{
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(RefViewModel myViewModel)
{
db.Table1.Add(myViewModel.Ref);
db.SaveChanges();
return RedirectToAction("Index");
}
型号:
public class RefViewModel
{
public Table1 Ref { get; set; }
public string OperationNumber { get; set; }
public string Name { get; set; }
public string ContactNo { get; set; }
}
以上代码中只能保存在table1中。那我该怎么做才能保存两张表呢?
(哦,顺便说一句。您可能已经注意到“绑定(包括=”无处可去,我已禁用它,因为在保存到数据库时我得到空值。所以,无论如何。这不再是问题了。只是提到)
数据库是 SQL Server
编辑:关于检索数据
搜索控制器:
public ActionResult Search(string searchString)
{
var myRef = (from x in db.Table1
where x.OperationNumber.Contains(searchString)
select x).FirstOrDefault();
return View(myRef);
}
当我输入operationnumber 时返回详细信息。所以问题是当我只输入referenceId时如何从两个表中检索详细信息?
【问题讨论】:
-
您使用哪种方法以当前方式保存?要检索 2 个或更多表中的详细信息,请使用
join和equals到外键字段,例如from x in db.Table1 join y in db.Table2 on x.referenceId equals y.referenceId where ... select .... -
或者..您可以在数据库上创建一个视图...将其添加到您的 EF 模型中并将视图结果作为模型返回