如何防止Entity Framework使属性可以为空?

时间:2018-03-26 20:50:42

标签: sql-server entity-framework-6

这个问题可能有一些细微差别,因为previous questions描述了类似的问题,但他们的建议在我们的项目中似乎不起作用。该项目使用Entity Framework 6.1和数据库第一个设计模式和T4代码生成策略。我们有许多视图生成我们知道将始终具有默认值的计算值,但实体框架不断将属性更改为Nullable手动更新属性工作,但是一旦EDMX更新,它就会恢复到Nullable

有没有办法强制Entity Framework不默认为Nullable属性?理想情况下,这是我们可以遵循的模式,因为我们使用大量视图并且不断需要更新属性非常繁琐。

1 个答案:

答案 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