如何解决如何“覆盖” ValueGeneratedOnAdd() 生成器
我已经对我的数据库进行了建模,这样我就不会更新行,而是使用增量版本创建新的行。所以我的主键在大多数情况下是一个组合,请参见下面的示例。
public class Book {
public long Id { get; set; }
public int Version { get; set; }
public string Text { get; set; }
}
现在我会像这样在 OnModelCreating() 中设置它。
b.Property(p => p.Id)
.ValueGeneratedOnAdd();
b.HasKey(p => new { p.Id,p.Version });
因此,当我更新一行时,由于我可以访问其主键 Id + 版本,我想要做的是创建一个具有相同 Id 但版本 + 1 的新实体。
换句话说,我不想实现的目标是双重的。
- 在创建新记录时,我不想将 ID 生成为唯一值。
- 如果我已将 Id 设置为某个值,请改用该值。
如果上述方法不可行,我将改为使用字符串作为 Id 并使用一些 GUID 来生成 Id,但之后我将不得不进行某种“尝试”插入,或在此之前检查“包含”我真的不喜欢。我希望有一个可以尽可能多地保留这种结构的解决方案。
更新 1
这是一个带有 .NET5 和 sqlServer 的 AspNetCore 应用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。