手动设置EntityKey而不访问数据库

时间:2016-01-20 19:49:37

标签: c# entity-framework foreign-keys entity-framework-6 entitykey

在我的应用程序(数据库优先)中,主键始终由客户端创建,而不是由底层数据库创建。

在实体框架v4中,每个Entity都有EntityKey属性,可以手动设置。

但是,我在EF6中找不到了它?

有什么具体原因吗?

我不想只调用ctx.SaveChanges()来设置Entity's密钥,因为这意味着要调用数据库。

我也想知道为什么ObjectContext.CreateEntityKey已经消失了?!

1 个答案:

答案 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);