在Entity Framework Core中使用 "Attach "作为Upsert[英] Use "Attach" as an Upsert in Entity Framework Core

本文是小编为大家收集整理的关于在Entity Framework Core中使用 "Attach "作为Upsert的处理方法,想解了在Entity Framework Core中使用 "Attach "作为Upsert的问题怎么解决?在Entity Framework Core中使用 "Attach "作为Upsert问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

根据 独角兽,

<块引用>

DbSet.Attach 将图中的所有实体置于未更改状态.但是,如果实体具有存储生成的键(例如身份列)并且没有设置键值,则实体将处于已添加状态.

我在使用"商店生成的密钥"部分时遇到了问题.我的数据库是在 SMSS 中创建的,并且我的表有一个唯一标识符类型的 Id 列,而不是 null.它是主键.但是我如何告诉 SMSS 它应该是商店生成的呢?当我运行导入时,C# 会发现这一点吗?(特别是,如果可能的话,我想在内存数据库上进行测试.)

解决方案

使用alter table SQL语句设置列的默认值:

alter table myTable alter column myIdColumn default newid()

在 c# 方面,装饰您的 EF 类以指示该列的值是自动生成的:

[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
Guid myIdColumn { get; set; }

本文地址:https://www.itbaoku.cn/post/1793965.html