我正在使用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)。
有没有办法让这些不属于原始数据库表的计算列映射到我的属性?
提前致谢,
兹德涅克