EF4 отображает обнуляемый десятичный столбец в свойство ненулевого значения - PullRequest
1 голос
/ 19 июля 2011

Я использую POCO (без прокси) с EF4.

В базе данных у меня есть этот десятичный столбец, который может принимать значения NULL:

<Property Name="AMOUNT" Type="decimal" Precision="12" Scale="2" />

В моем POCO у меня есть этот элемент, который не может принимать значения NULLЗначение свойства:

public decimal Amount { get; set; }

Если значение в базе данных равно null, я хочу, чтобы для свойства было установлено значение 0.Как мне этого добиться?Я бы предпочел не иметь здесь свойства Nullable, в противном случае мне придется загрязнять свою бизнес-логику кодом GetValueOrDefault().

[Этот вопрос показался мне тем, о чем я спрашивал, ноЯ не уверен, что это действительно был ответ.]

1 Ответ

2 голосов
/ 19 июля 2011

К сожалению, вы должны использовать nullable decimal в вашем POCO, потому что EF не предоставляет никаких простых преобразователей / преобразователей типов, где вы могли бы разместить свою логику преобразования. Типы должны быть одинаковыми, чтобы он работал.

В случае EDMX есть один возможный уродливый обходной путь. Вы можете сопоставить свой столбец с непубличным свойством и предоставить другое открытое свойство, которое не будет отображено (в вашей частичной части класса POCO), и у вас будет логика преобразования в его методах получения и установки. Здесь описано, как вы можете изменить видимость свойства.

...