手动设置实体密钥,而无需访问数据库
本文关键字:访问 数据库 设置 实体 密钥 | 更新日期: 2023-09-27 18:31:16
在我的应用程序(数据库优先)中,主键始终由客户端创建,而不是由底层数据库创建。
在实体框架 v4 中,每个Entity
都有其EntityKey
可以手动设置的属性。
但是,我在 EF6 中找不到它了?
有什么具体原因吗?
我不想调用ctx.SaveChanges()
只是为了设置一个Entity's
密钥,因为这意味着对数据库的调用。
我也想知道为什么ObjectContext.CreateEntityKey
不见了?!
如果您使用的是 POCO 的 - 这是一个如何完成的示例
public class ChronosItem
{
[Column, Key, Required, MaxLength(26), DatabaseGenerated(DatabaseGeneratedOption.None)]
public string Id { get; set; }
....
如果您无法调整您的实体
覆盖您的上下文中的"OnModelCreateating"方法..像这样..
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<ChronosItem >()
.HasKey(p => p.Id)
.Property(p => p.Id)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);