я следующий код:Когда выполняется интерполированная строка?
internal class Constants
{
internal static string Source { get; set; }
#region EvaluationRepository
internal static string QUERY_001 = [email protected]"
select
e.*
from {Source} e
where
e.id = @Id
";
internal static string QUERY_002 = [email protected]"
select
e.*
from {Source} e
where
[email protected]
and e.begindate >= @FromDate
and e.enddate <= @ToDate
";
internal static string QUERY_003
{
get
{
return [email protected]"
select
d.statusid [StatusId],
count(1) [Count]
from
(select e.statusid
from {Source} e
where e.begindate >= @FromDate and e.enddate <= @ToDate) d
group by d.statusid
";
}
}
#endregion
}
Единственный раз, когда {Source}
заполнен, когда я разоблачить запрос как собственности. (QUERY_003)
Не работает при выставлении в качестве поля . (QUERY_001, QUERY_002)
Может ли кто-нибудь объяснить, почему? Из-за статичности (не уверен, что это слово)?
Извините за дословной интерполяции шума для SQL :)
Действительно, интерполяция строк - это красная селедка. Вы действительно спрашиваете: «Когда инициализаторы полей оцениваются?». –
Да, потому что, когда я выставляю строку как поле {Источник}, не заполняется. – grmbl
Это потому, что это 'static', что означает, что он будет создавать значение при первом инициализации класса' static', поэтому изменяется 'Source' после этого не будет никакого эффекта. Но свойство будет инициализировать новую строку, когда вы ее получите, используя последнее значение для 'Source'. – juharr