实体框架代码优先:共享主键
Posted
技术标签:
【中文标题】实体框架代码优先:共享主键【英文标题】:Entity Framework Code First: shared primary key 【发布时间】:2011-05-05 09:02:13 【问题描述】:我有一个现有表,其主键超过 3 列(1 个 varchar 和 2 个整数)。 我如何告诉实体框架使用这个“密钥”。 是否可以使用模型构建器、属性或其他方式?
谢谢!
【问题讨论】:
【参考方案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。
【讨论】:
以上是关于实体框架代码优先:共享主键的主要内容,如果未能解决你的问题,请参考以下文章