这个问题可能有一些细微差别,因为previous questions描述了类似的问题,但他们的建议在我们的项目中似乎不起作用。该项目使用Entity Framework 6.1和数据库第一个设计模式和T4代码生成策略。我们有许多视图生成我们知道将始终具有默认值的计算值,但实体框架不断将属性更改为Nullable
手动更新属性工作,但是一旦EDMX更新,它就会恢复到Nullable
。
有没有办法强制Entity Framework不默认为Nullable
属性?理想情况下,这是我们可以遵循的模式,因为我们使用大量视图并且不断需要更新属性非常繁琐。
答案 0 :(得分:1)
答案是确保视图从SQL Server报告为not null
,此时实体框架不会默认为Nullable
。这可以通过forcing the view column to be not null
来完成。简言之,将
SELECT CASE Status WHEN 3 THEN 1 ELSE 0 END AS HasStatus
FROM dbo.Product
将HasStatus
列映射到int, null
。然而,
SELECT ISNULL(CAST(CASE Status WHEN 3 THEN 1 ELSE 0 END), 0) AS HasStatus
FROM dbo.Product
将HasStatus
列映射到int, not null
。