因缺少主键导致 EF 数据模型排除
在将现有数据库集成到 Entity Framework (EF) 4.0 时,某些表缺少主键的情况很常见。在创建新的实体数据模型时,就会出现这个问题,导致错误消息指出缺少主键,并随后将该表排除在外。
通常认为,必须向受影响的表添加物理主键才能解决此问题。但是,有一种变通方法允许您在不修改其架构的情况下使用这些表。
正如 Tillito 所建议的那样,此变通方法涉及在一个新的 SELECT 语句中修改有问题的视图的 SELECT 语句。通过这种方式包装原始 SELECT 语句,您可以使用 ISNULL 函数指定要用作主键的列。相反,可以使用 NULLIF 函数防止将列指定为主键。
示例:
考虑以下示例:
SELECT
ISNULL(MyPrimaryID,-999) MyPrimaryID,
NULLIF(AnotherProperty,'') AnotherProperty
FROM ( ... ) AS temp
在此示例中,ISNULL 函数强制 EF 将 "MyPrimaryID" 识别为主键,而 NULLIF 函数确保 "AnotherProperty" 不会被视为主键。
通过应用此技术,您可以避免修改数据库架构的需要,并将现有的表无缝集成到您的 EF 数据模型中,从而允许进行数据操作,而无需对物理主键进行修改。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3