【发布时间】:2018-09-04 09:02:36
【问题描述】:
我是 lambda 表达式和实体框架的新手。我的问题是,我有以下表格结构。
tbl_loan => loanID,LoanValue,LoanType
tbl_crin => crID,CRValue,CUSName,FacID // 这里 FacID 是 tbl_loan(loanID) 的外键
tbl_crg => crgID,crgName,CRValue,Amount FacID // 这里是tbl_loan(loanID)的FacID外键
我需要根据loanID 编写获取每个表的所有列。如何使用 lambda 表达式编写查询。
在这种方法中,我需要返回该查询的结果。它接受名为loanID 的参数。我试过一个简单的,但我不知道要写完整的代码(lambda表达式)
public List<tbl_loan> GetCRGDetails(int loanID)
{
var result = new List<tbl_loan>();
var entities = new LAEntities();
try
{
result = entities.tbl_loan.Where(ln => ln.loanID == loanID).ToList();
}
catch (Exception e)
{
Logger.LogWriter("SITS.SB.LA.BL.App", e, "AgeDataLogic", "GetCRGDetails");
}
return result;
}
请帮我解决这个问题。在这里我返回tbl_loan。我是否需要创建额外的类来重新调整所有数据?还是有其他办法?
更新:
在我的项目中,部分details.cshtml如下,
@model SITS.SB.LA.DA.tbl_loan
@{
ViewBag.Title = "Details";
}
<h2>Details</h2>
<div>
<h4>Customer Loan Details</h4>
<hr/>
<label for="colFormLabelSm" class="col-sm-2 col-form-label col-form-label-sm" ng-model="">@Html.DisplayFor(model => model.ID)</label>
<label for="colFormLabelSm" class="col-sm-2 col-form-label col-form-label-sm" ng-model="">@Html.DisplayFor(model => model.NETINCOME)</label>
那么,如何显示其他表的列值,例如 (crID,CRValue,CUSName)
我的控制器类如下,
public ActionResult Details(int id)
{
var logic = new LoanDetailsDataLogic();
var result = logic.GetCRGDetails(id);
return View(result);
}
【问题讨论】:
-
如果您使用正确的关系和导航属性,则不需要连接。 ORM 将生成连接。此外,您发布的代码显示了对具有类表名称的类的 LINQ to Objects 查询。 questino 中没有实体框架代码
-
@PanagiotisKanavos 我不清楚。请给我代码示例。在我的 asp.net 网络应用程序中。如何访问这些数据以查看
-
正如@PanagiotisKanavos 所说,通常你可以只做
Loan.Crins,这将指向来自tbl_crin的关联记录。此外,命名tbl_loan等很奇怪,ORM 应该从 db 关系模型中抽象出来,并将数据作为一种语言的实体/对象处理——而不是(你似乎在做什么)将 db 的东西带入代码中 -
@PanagiotisKanavos 请检查我更新的问题
标签: c# asp.net-mvc entity-framework lambda