EF Code First如何使用数据注释从多个列创建密钥

时间:2011-02-04 13:53:20

标签: c#-4.0 entity-framework-4 ef-code-first

我试图在具有Attributes和DataAnnotation的类中声明一个复合键。

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

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

似乎没有这样做。 我到目前为止所能找到的只是一些流畅的选择,但我只想用注释来做这件事。

澄清: 我正在寻找一种DataAnnotation方法来创建一个主键包含2个字段Id和Nr的表...

感谢您的帮助    安德烈亚斯

2 个答案:

答案 0 :(得分:9)

您可以使用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});
      }
}

答案 1 :(得分:0)

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

这是link.希望这有帮助。