在db first方法中从数据库(EF6)更新模型时,可空属性丢失

时间:2015-02-27 11:46:30

标签: entity-framework-6

我正在使用数据库优先方法,该数据库没有任何foreign key关系(关联)。我在edmx文件中尝试了它,但外键标量属性不能nullable,它在edmx中显式设置为false。

我想要的是:从数据库&更改使用数据库中的更新模型,标量属性不得重置为 nullable none nullable

中更新数据库模型后,如何保持entity framework 6属性不变

1 个答案:

答案 0 :(得分:1)

我认为你的第一个课程应该是修复你的数据库,如果列永远不为null,那么它们不应该是可空的。然后你可以将外键放入并在实体框架中创建它们。

我来到这里有一个问题,即视图具有(无)的可空属性,即使它们总是有一个值,所以一个简单的示例视图

CREATE VIEW [CountItems]
AS
SELECT OrderItem.Sku, COUNT(*) as total FROM OrderItem
GROUP BY OrderItem.Sku

给你

public partial class CountItems
{
    public string Sku { get; set; }
    public Nullable<int> total { get; set; }
}

尽管总数永远不会为空。让EF知道它永远不会为空的技巧是使用无意义的ISNULL

ALTER VIEW [CountItems]
AS
SELECT OrderItem.Sku, ISNULL(COUNT(*),0) as total FROM OrderItem
GROUP BY OrderItem.Sku

然后,数据库中的EF数据库第一次更新模型将获得提示并将其创建为不可为空的

希望这可能会有所帮助。