C# Linq to SQL可选列,SQL生成字段
我的LINQtoSQL类中有一个属性,但它实际上不存在于我的数据库中 我只在一次查询期间填充此列,即进行排名搜索C# Linq to SQL可选列,SQL生成字段,c#,linq-to-sql,C#,Linq To Sql,我的LINQtoSQL类中有一个属性,但它实际上不存在于我的数据库中 我只在一次查询期间填充此列,即进行排名搜索 IEnumerable<BookingType> results = db.ExecuteQuery<BookingType> ( "(SELECT mm.rcount AS SearchRank, b.* FROM (SELECT m.TourID AS my
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查询的每个单独的列名。我不确定这是否有效 将virtual添加到SearchRank属性,并从BookingType中删除column属性
e.g. public virtual int? SearchRank { get; set; }
创建继承BookingType的新类BookingType2
e.g. public virtual int? SearchRank { get; set; }
在新类中,重写SearchRank属性并添加Column属性
将execute方法的签名更改为BookingType2
e.g. db.ExecuteQuery<BookingType2>(...
如果有效,您应该能够将结果转换回BookingType。我不确定这是否有效 将virtual添加到SearchRank属性,并从BookingType中删除column属性
e.g. public virtual int? SearchRank { get; set; }
创建继承BookingType的新类BookingType2
e.g. public virtual int? SearchRank { get; set; }
在新类中,重写SearchRank属性并添加Column属性
将execute方法的签名更改为BookingType2
e.g. db.ExecuteQuery<BookingType2>(...
如果有效,您应该能够将结果转换回BookingType