Я хотел бы сделать следующее:
tradingObjectQueryOver.Where(
Restrictions
.On<OrderDealDto>(d => d.UnderlyingContractMaturity.Value.ToContractName())
.IsInG(filter.ContractDates.ToContractName()));
, где
public const string ContractNameFormat = "MMMyy";
public static string ToContractName(this LocalDate date)
{
return date.ToString(ContractNameFormat, UsCulture).ToUpper();
}
, и поэтому я не могу вызвать d.UnderlyingContractMaturity.Value.ToContractName (), поскольку SQL ничего не знает о c #методы, такие как ToString.Какой самый простой способ исправить это, кроме TSQL-зависимых функций?
new SQLFunctionTemplate(NHibernateUtil.String, "FORMAT(?1, 'yyyMM', 'us-US')");
, но в то же время я не хочу снижать производительность, это всего лишь незначительная часть запроса, и она находится в масштабе100к-10м элементов в дБ.