我想将以下SQL查询转换为SubSonic查询。
SELECT [dbo].[tbl_Agency].[ParentCompanyID]
FROM [dbo].[tbl_Agency]
WHERE REPLACE(PhoneNumber, ' ', '') LIKE REPLACE('%9481 1111%', ' ', '')
我以为我会像下面那样做,但我无法让它产生有效的SQL。
//SubSonic
string agencyPhoneNumber = "9481 1111";
SubSonic.SqlQuery subQueryagencyPhoneNumber = new SubSonic.Select(Agency.ParentCompanyIDColumn.ColumnName);
subQueryagencyPhoneNumber.From(Agency.Schema.TableName);
//WHERE
subQueryagencyPhoneNumber.Where("REPLACE(" + Agency.PhoneNumberColumn.ColumnName + ", ' ', '')").Like("%" + agencyPhoneNumber + "%");
有没有人知道如何解决这个问题 - 我正在使用SubSonic 2.2。 我觉得我在这里服用疯子 - 这应该是直截了当的,对吗?
干杯, JohnBob
答案 0 :(得分:1)
我认为您需要将类似的表达式添加到内联SQL中 类似的东西:
var whereSql = string.Format("REPLACE({0}, ' ', '') Like '%{1}%'", Agency.PhoneNumberColumn.ColumnName, agencyPhoneNumber);
subQueryagencyPhoneNumber.Where(whereSql);
上查看类似的问题
答案 1 :(得分:1)
如果真正复杂的查询出现最糟糕的情况,您仍然可以使用@ http://subsonicproject.com/docs/CodingHorror
所述的.CodingHorror()方法使用亚音速只要您选择亚音速知道何时投射集合的有效列名称 - > .ExecuteAsCollection()你会很好,仍然可以使用你的活动记录。
当我有大量复杂的查询时,这已经让我失去了很多次。只需确保仍然使用参数并清理语句,以便对输入进行清理。