Ответ 1
Сделайте эту модификацию: isnull([dbo].[GetBar](T.Col2), 0)
У меня есть хранимая процедура SQL Server, которая повторяет это:
CREATE PROCEDURE [jp].[GetFoo]
@Guid UNIQUEIDENTIFIER
AS
SELECT
CONVERT(BIT, (CASE WHEN [dbo].[GetBar](T.Col2) = 3 THEN 1 ELSE 0 END)) IsGetBarCol2EqualToThree
FROM
[dbo].[MyTable] T
WHERE
T.Col1 = @Guid
Когда я делаю функцию Импорт/получение информации о столбцах в EF, выводимый тип столбца IsGetBarCol2EqualToThree Nullable<bool>
. Но нет никакого способа, чтобы это поле было нулевым, поэтому я хотел бы просто bool
. Есть ли способ сделать это, который будет постоянным при обновлении (т.е. Который не зависит от модификации любого сгенерированного кода)?
Версия SQL Server - 2005, я использую Visual Studio 2010SP1 с EF 4, проект скомпилирован с .net 4.0.
Сделайте эту модификацию: isnull([dbo].[GetBar](T.Col2), 0)
Вы можете создать сложный тип, а затем изменить свойство Nullable сгенерированного поля. Может быть полезно, если вы не хотите менять свой sp.
шаг за шагом:
В качестве альтернативы вы можете открыть edmx как xml и найти то же свойство.
<ComplexType Name="...">
<Property Type="Int32" Name="..." Nullable="true" />
ps: Я тестировал его в VS2012, EF 5
Вам нужно решить эту проблему.
1- alter procedure to isnull ( "ваше выражение", 0), затем обновите свою модель из базы данных и обновите ее.
2- вы можете открыть модель класса и изменить ее вручную, но любое обновление модели снова потеряет изменение.
Итак, мое мнение - первое решение, лучшее из лучших.