sql-server - EF Core 计算的主键属性未更新
问题描述
我在我的实体中配置了这样的 SQL Server 中的计算主键:
var e = builder.Entity<MyEntity>();
e.ToTable("MyTable", "MySchema")
.HasKey(k => k.Id);
e.Property(k => k.Id)
.ValueGeneratedOnAdd();
e.Property(k => k.Id)
.Metadata.BeforeSaveBehavior = PropertySaveBehavior.Ignore;
e.Ignore(i => i.PreviousId);
在 EF Core 2.1 中保存更改后如何更新属性?
myEntity.RelatedProperty = 1;
_db.SaveChangesAsync();
// Here I want to have my updated Id
更新:这是表定义:
CREATE TABLE [MySchema][MyTable](
[Id] AS (isnull((CONVERT([nvarchar],[RelatedProperty],(0))+'-')+CONVERT([nvarchar],[RelatedProperty2],(0)),'-')) PERSISTED NOT NULL,
[RelatedProperty] [int] NOT NULL,
[RelatedProperty2] [int] NOT NULL
CONSTRAINT [PK_MyTable] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
解决方案
你不。不支持更改 PK。如果您认为这是一个问题 - 等到您开始尝试在外键关系中使用它们。
推荐阅读
- acumatica - 如何在 Acumatica 中使用 PXRedirectToUrlException
- scala - 获取过滤后的 JSON 值 Scala Play
- excel - 给定 2 个日期时,查找单元格范围
- java - 如何让所有 Android Studio 3.5 源文件不在项目树中的通常位置,而是在单独的驱动器上
- python - “异常”对象不可调用
- ruby - 有没有一种方法可以在 ruby 中获取 key 的值并将其存储在变量中
- google-apps-script - 使用 DriveApp 访问共享驱动器
- arduino - 如何使用 ESP32 控制多个舵机
- ios - 如何在 ARKit 中获取一些有用的传感器数据?
- c# - 如何在 .NET Core 3 中签署数据