【发布时间】:2015-09-14 11:45:23
【问题描述】:
给定一个表格
CREATE TABLE pk_ordinal_test
(
C1 INT NOT NULL,
C2 INT NOT NULL,
C3 INT NOT NULL
)
ALTER TABLE pk_ordinal_test ADD PRIMARY KEY (C3, C1);
注意主键已经定义为C3,C1,列顺序为C1,C3。
主键的实体框架代码优先配置是否应为主键序数:
HasKey(x => new { x.C3, x.C1 });
或者应该在列序数中:
HasKey(x => new { x.C1, x.C3 });
使用 MSI 安装中的 EF Tools v6.1.3,使用 Visual Studio -> 添加 -> 新项目 -> ADO.Net 实体数据模型。选择 Code-first,生成如下:
public partial class pk_ordinal_test
{
[Key]
[Column(Order = 0)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int C1 { get; set; }
public int C2 { get; set; }
[Key]
[Column(Order = 1)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int C3 { get; set; }
}
上面定义的主列顺序不正确。
【问题讨论】:
-
您能否从我在您的扩展程序上发布的帖子中编辑/添加架构和 EF 的第一代代码到您的帖子中,以显示 VS 提供的内容?
-
您应该在回答中表明这一点。我已将上述问题尽可能简明扼要。
-
我编辑了我的回复并添加了架构和 EF 代码首先生成的代码。
-
据我所知,EF 6 似乎没有查询有关主键序数的信息entityframework.codeplex.com/SourceControl/latest#src/…
-
我在这里添加了一个错误:entityframework.codeplex.com/workitem/2819
标签: entity-framework ef-code-first primary-key code-first