如何将计算值映射到属性?

时间:2017-12-18 14:14:38

标签: entity-framework orm calculated-columns

我正在使用Entity Framework将数据库映射到我的应用程序中的类 该类由EF自动生成为部分类,我还在自己的文件中将一些其他属性添加到同一个部分类中。

我使用这些查询从表中获取实体列表(就我所知,它们是等价的):

db.DailyEntry.ToList  
db.DailyEntry.SqlQuery("SELECT * FROM DailyEntry").ToList  
db.Database.SqlQuery(Of DailyEntry)("SELECT DailyEntry.DailyEntryId, DailyEntry.Driver, DailyEntry.Billing, DailyEntry.EntryDate FROM DailyEntry").ToList  

然后我在这个类中添加了一个字段:

Public Property IsHoliday As Boolean = False  

我遍历列表并计算日期是否属于银行假日。我有一个假期数据库表:

For Each entry As DailyEntry in _myList_
    entry.IsHoliday = db.Database.SqlQuery(Of Boolean)("SELECT IsHoliday FROM Holiday WHERE HolidayDate = {0}", entry.EntryDate).FirstOrDefault  
Next

这一切都运行正常但随着记录数量的增加,数据库调用次数也增加了,我需要通过将这些内容合并为一个调用来加速应用程序。
我修改了查询以包含假日信息:

SELECT DailyEntry.*, Holiday.IsHoliday AS IsHoliday FROM DailyEntry LEFT OUTER JOIN Holiday ON DailyEntry.EntryDate = Holiday.HolidayDate;  

SELECT DailyEntry.DailyEntryId, DailyEntry.Driver, DailyEntry.Billing, DailyEntry.EntryDate, Holiday.IsHoliday AS IsHoliday FROM DailyEntry LEFT OUTER JOIN Holiday ON DailyEntry.EntryDate = Holiday.HolidayDate;  

和一些类似的尝试。当我将它们作为数据库查询并返回预期数据时,它们运行良好,但是当我尝试在我的应用程序中使用它们时:

db.Database.SqlQuery(Of DailyEntry)("SELECT DailyEntry.*, Holiday.IsHoliday AS IsHoliday FROM DailyEntry LEFT OUTER JOIN Holiday ON DailyEntry.EntryDate = Holiday.HolidayDate").ToList  

IsHoliday属性始终保留默认值(False)。

有没有办法让这些不属于原始数据库表的计算列映射到我的属性?

提前致谢,
兹德涅克

0 个答案:

没有答案