在我的应用程序(数据库优先)中,主键始终由客户端创建,而不是由底层数据库创建。
在实体框架v4中,每个Entity
都有EntityKey
属性,可以手动设置。
但是,我在EF6中找不到了它?
有什么具体原因吗?
我不想只调用ctx.SaveChanges()
来设置Entity's
密钥,因为这意味着要调用数据库。
我也想知道为什么ObjectContext.CreateEntityKey
已经消失了?!
答案 0 :(得分:0)
如果您正在使用POCO - 这是一个如何完成的样本
public class ChronosItem
{
[Column, Key, Required, MaxLength(26), DatabaseGenerated(DatabaseGeneratedOption.None)]
public string Id { get; set; }
....
如果您无法调整您的实体
覆盖您的上下文中的“OnModelCreating”方法..就像这样..
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<ChronosItem >()
.HasKey(p => p.Id)
.Property(p => p.Id)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);