我的 Linq to SQL 类中有一个在我的数据库中实际上并不存在的属性。
我只在一个查询期间填充此列(即用于排名搜索)
IEnumerable<BookingType> results = db.ExecuteQuery<BookingType>
(
"(SELECT mm.rcount AS SearchRank,
b.* FROM (SELECT m.TourID AS myId, COUNT(m.RecordType) AS rcount
FROM (((SELECT * FROM Bookings h WHERE h.RecordType = 'H'
AND h.TourArea like '%bull%')
union
(SELECT * FROM Bookings t WHERE t.RecordType = 'T' and t.TourGuideName like '%bull%')) ) m group by m.TourID) mm
INNER JOIN Bookings b ON mm.myId= b.TourID WHERE b.RecordType = 'H')", "bull"
);
这是模型的一部分:
/// <summary>
/// Unique identifier for a booking
/// </summary>
[DataMember]
[Column(DbType = "int", IsPrimaryKey = true, AutoSync = AutoSync.OnInsert, IsDbGenerated = true)]
public int? BookingID { get; set; }
/// <summary>
/// Search Ranking
/// </summary>
[DataMember]
[Column(DbType = "int")]
public int? SearchRank { get; set; }
当我针对我的排名搜索查询运行它时,它确实非常有效。当我运行任何其他查询时,我收到错误“SearchRank 字段不存在”,因为它不存在。如果我将 SearchRank 字段放入数据库中,则在进行排名搜索时该字段返回 null(大概是因为我的查询的 b.* 部分也返回 SearchRank。
有没有办法在我的模型上设置某种“OptionalColumn”属性?
否则,我必须将 SearchRank 列放入数据库中,然后为 RankedSearch 查询写出每个单独的列名。