【问题标题】:nullable property lost when updating model from database (EF6) in db first approach在 db first 方法中从数据库 (EF6) 更新模型时,可空属性丢失
【发布时间】:2015-02-27 11:46:29
【问题描述】:

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

我想要的是:从数据库中进行更改并使用数据库中的更新模型,该标量属性不得重置为 nullable none
entity framework 6中的数据库更新模型后,如何保持nullable属性不变?

【问题讨论】:

  • 相关question 与可能的解决方案。在 EF4 中,手动更改将通过数据库更新持续存在。

标签: entity-framework-6


【解决方案1】:

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

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

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 知道它永远不会为 null 的技巧是使用无意义的 ISNULL

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

然后 EF 数据库首先从数据库更新模型将获得提示并将其创建为不可为空

希望能有所帮助。

【讨论】:

  • 问题实际上是相反的,他们希望将“Nullable”设置为 false,但它会重置为“None”。如果您使用的是 TPH,这是一种常见的情况,这是 Microsoft 推荐的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-21
  • 2017-07-18
  • 1970-01-01
  • 2014-06-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多