我正在使用实体框架6学习c#。当我的程序控制到达以下代码行时。
Date= j.Date.Value.ToShortDateString()
它停止执行…
以下是实体框架连接查询代码
SCIMSEntities db = new SCIMSEntities();
var list = from i in db.tblVendors
join j in db.tblVendorPaymentBillsHistories on i.Id equals j.Vendor_Id
select new clsAddBillToVendor
{
id= j.Id,
CompanyName= i.CompanyName,
BillNo= j.BillNo,
Details= j.Details,
BilllAmount= j.BillAmount.Value,
Date= j.Date.Value.ToShortDateString(),
TotalAmount= j.TotalAmount.Value
};
return list;
我发现了错误。当控制到达这一行时执行
Date= j.Date.Value.ToShortDateString()
,但值已经在SQL Server数据库是短日期格式。我认为DateTime类没有定义或异常处理机制来转换已经短的DateTime到短的DateTime格式。所以它停止了执行。我刚刚从代码中删除了"ToShortDateString()"。新的代码行是
Date= j.Date.Value;
一切正常
你不能在LINQ to Entities中使用字符串函数,所以你需要创建一个IEnumerable,这样你才能使用LINQ to Entities:
SCIMSEntities db = new SCIMSEntities();
var (list = from i in db.tblVendors
join j in db.tblVendorPaymentBillsHistories on i.Id equals j.Vendor_Id
select new clsAddBillToVendor
{
j.Id,
i.CompanyName,
j.BillNo,
j.Details,
j.BillAmount,
j.Date,
j.TotalAmount
})
.AsEnumerable()
.Select(x => new clsAddBillToVendor
{
x.Id,
x.CompanyName,
x.BillNo,
x.Details,
x.BillAmount,
Date = x.Date.Value.ToShortDateString(),
x.TotalAmount
})
.ToList();
return list;