是否可以在 Microsoft SQL Server Management Studio 中定义数据库视图的主键和外键?如何?
我正在尝试创建一个 ADO.NET 实体数据模型来读取四个我无法修改的旧的、格式不正确的数据库表。我只创建了我需要的数据的视图。
四个视图应映射到具有多对多关系的简单三实体 EDMX。
创建数据模型时出现此错误:
表/视图“...”没有
主键已定义但无效
可以推断出主键。这
表/视图已被排除。使用
您需要审查的实体
您的架构,添加正确的键并
取消注释它。
它正确推断了两个视图的主键。但与另外两个人却未能做到这一点。
我的问题视图之一使用聚合函数:
SELECT MAX(...) ... GROUP BY ...
另一个应该有两个外键的复合主键。
您需要定义您的视图,以便:
- 包括所有
PRIMARY KEY
columns
- 不使用任何
JOIN
's
- 不使用任何聚合函数或
UNION
's
视图中的任何行都应该映射到表中的一行。
我的问题视图之一使用聚合函数
它无法更新。对于只读实体,解决方案来自here:
当无法推断出任何键时,包含相应 EntityType 元素(无 Key 元素)的代码注释将添加到 .edmx 文件的 SSDL 部分。
就您而言,由于您似乎想要一个只读实体,因此您可以:
- uncomment the SSDL entity
- 将一个/某些属性标记为 Nullable="False"
- 添加适当的关键元素
- 添加相应的定义查询。
对于第二个问题:
另一个应该有两个外键的复合主键
From 文档:
表示数据库中两个表之间的多对多关系的表在概念模式中可能没有等效实体。当。。。的时候EDM
当工具遇到这样的表时,除了作为外键的两个列之外,没有任何列,则映射表在概念模式中表示为多对多关联而不是实体。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)