【发布时间】:2011-05-05 09:02:13
【问题描述】:
我有一个现有表,其主键超过 3 列(1 个 varchar 和 2 个整数)。 我如何告诉实体框架使用这个“密钥”。 是否可以使用模型构建器、属性或其他方式?
谢谢!
【问题讨论】:
标签: mapping ef-code-first code-first entity-framework-4.1
我有一个现有表,其主键超过 3 列(1 个 varchar 和 2 个整数)。 我如何告诉实体框架使用这个“密钥”。 是否可以使用模型构建器、属性或其他方式?
谢谢!
【问题讨论】:
标签: mapping ef-code-first code-first entity-framework-4.1
在fluent api中你必须使用匿名类型:
modelBuilder.Entity<YourType>()
.HasKey(e => new
{
e.VarChar,
e.Int1,
e.Int2
});
其他方式是使用数据注释:
public class YourType
{
[Key, Column(Order = 0)]
public string VarChar { get; set; }
[Key, Column(Order = 1)]
public int Int1 { get; set; }
[Key, Column(Order = 2)]
public int Int2 { get; set; }
}
在这两种情况下,列的顺序都很重要。一旦您尝试使用DbSet<YourType>.Find,您将必须以相同的顺序提供密钥。 EF 也在内部使用 order。
【讨论】: