【问题标题】:Trying to add new view to edmx file will not create尝试将新视图添加到 edmx 文件不会创建
【发布时间】:2017-10-03 14:29:36
【问题描述】:

我创建了一个 ADO.NET 实体数据模型,现在我想向它添加一个新视图。我找到了这个source 并完成了这些步骤,但新视图没有添加到模型中。这是我遵循的步骤:

1) 右键单击​​我的 .edmx 文件并选择打开方式
2) 选择 ADO.NET 实体数据模型设计器
3) 右键单击​​数据模型设计器(在“添加”选项卡中)并选择“从数据库更新模型”
4) 检查我的新视图并点击完成
5) 保存设计好的模型,并对正在运行的脚本说没问题

之后我的新视图不在模型设计器中,或者我的解决方案资源管理器中有一个新类。我错过了什么?其他人还需要查看什么来帮助我诊断此问题?

【问题讨论】:

  • 您的视图中是否定义了主键
  • @AntoinePelletier,不,它没有。这就说得通了。如何为视图定义 2 字段主键?

标签: c# asp.net-mvc entity-framework ef-database-first


【解决方案1】:

如果您没有定义主键,Entity Framework DB first 通常会忽略您的视图。

如果您希望使其工作,请在 DATABASE 中使用 ISNULL() 函数和/或对您的字段之一的唯一约束。确保该字段是唯一的。

如果需要,请参阅此问题:

Views,Entity,Cannot deduce a primary key

对于唯一的 2 个字段的组合,一种简单但不是很干净的方法是在视图中添加另一列,包含两个字段的串联并将它们放入 isnull() 中。假设它是两个 nvarchar(5) :

select isnull(columnA + columnB, '1234567890'), columnA, columnB, ...

【讨论】:

  • 我没有一个唯一的字段;需要 2 个字段才能唯一。这可能吗?
  • 当然,我会编辑我的问题,但首先告诉我,如果您使用的是 SQL SERVER,我将无法为其他技术提供帮助
  • @djblois 无论您的数据库是什么类型,这里都有一种方法
猜你喜欢
  • 1970-01-01
  • 2011-09-09
  • 2018-03-09
  • 1970-01-01
  • 2016-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多