EF Codefirst 如何使用 DataAnnotations 从多列创建键

问题描述 投票:0回答:3

我正在尝试获取在具有属性和数据注释的类中声明的复合键。

[Key]
[Column(Order=1)]
public Guid Id { get; set; }

[Key]
[Column(Order=2)]
public int Nr { get; set; }

似乎没有进行下去。 到目前为止我所能找到的只是一些流畅的选项,但我只想通过注释来完成此操作。

澄清一下: 我正在寻找一种 DataAnnotation 方法来创建一个表,该表的主键由 2 个字段 Id 和 Nr 组成...

感谢您的帮助 安德烈亚斯

c#-4.0 entity-framework-4 ef-code-first
3个回答
10
投票

您可以使用 Fluent API 轻松执行以下操作:

modelBuilder.Entity<YourClass>().HasKey(obj => new {obj.Id,obj.Nr});

此外,您还可以创建继承自

EntityTypeConfiguration
的单独类,并在其构造函数中添加此行:

public class <*Name*>Mapping:EntityTypeConfiguration<*Name*> 

      public <*Name*>Mapping(){
             this.HasKey(obj => new {obj.Id,obj.Nr});
      }
}

0
投票

我上周问了一个类似的问题,但正在寻找流畅的语法。 Morteza 提供的答案(搜索更多有关 ef/CTP5 的答案 - 他很棒)还给出了使用数据注释的语法。

这是链接。希望这有帮助。


0
投票

在类定义的上方写:

[主键(名称(Id),名称(Nr))]

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.