如何处理Entity Framework中缺少主键?

时间:2012-01-25 00:05:27

标签: .net visual-studio-2010 sql-server-2008 entity-framework

使用Entity Framework,每当我在Visual Studio中“从数据库更新模型”时,创建的模型都无法使用。

问题是EF不能很好地处理没有主键的表。它将它们视为视图,这反过来又阻止您使用EF编辑表。您可以通过将模型(edmx文件)作为XML文件打开并对EntitySet定义进行一些更改来覆盖此行为。一遍又一遍地做这件事很烦人。除了在每次更新后添加主键或修改edmx文件之外,有没有人找到更永久的解决方法?

顺便说一句,我使用的是一个独特的键,但它分布在两列中。如果EF可以处理这个问题会很好,但是从EF 4.2开始它就没有了。

2 个答案:

答案 0 :(得分:4)

我不明白 - 您使用的是“唯一键”(我假设您的意思是唯一索引或唯一约束),因为该键有两列?您可以创建具有多个列的主键。我不确定为什么EF会以不同于单列主键的方式处理双列键,但这是一个多列主键的简单示例:

CREATE TABLE dbo.foobar
(
    fooID INT,
    barID INT,
    PRIMARY KEY (fooID, barID)
);

当然还有其他语法允许你在事后创建约束,你还应该明确地命名你的约束,但只想展示一个简单的例子。

答案 1 :(得分:3)

  

顺便说一句,我使用的是一个独特的键,但它分布在两列中。如果EF可以处理这个问题会很好,但是从EF 4.2开始它就没有了。

Yes it does;)