c# - Entity Framework Core 2 自动生成的列
问题描述
我有这个模型:
public class Model
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long ModelId {get;set;}
public int Variable {get;set;}
}
我希望这两个变量在添加时自动递增。如果我把[Key]
或DatabaseGeneratedOption.Identity
也放在变量属性上,EF Core 说你不能有 2 个标识列。
我也尝试过FluentAPI
:
modelBuilder.Entity().Property(variable => variable).ValueGeneratedOnAdd();
但我仍然得到同样的错误。
如何在添加时有 2 个自动递增的值?
解决方案
SqlServer 每个表只允许一个标识列。但它允许您根据需要定义和使用尽可能多的序列:
一个序列在数据库中生成一个连续的数值。序列不与特定表关联。
按照上面的 EF Core 文档链接,您可以指示 EF 创建序列并将其用于您的Variable
列,如下所示(如文档所述,“您无法使用数据注释配置序列”):
modelBuilder.HasSequence<int>("VariableSequence");
modelBuilder.Entity<Model>().Property(e => e.Variable)
.HasDefaultValueSql("NEXT VALUE FOR VariableSequence");
推荐阅读
- c# - 我的 Azure 通知中心中的 DefaultFullSharedAccessSignature 是什么以及在哪里
- r - 使用 RMarkdown LaTex 错误编译多个 PDF
- ios - 在 Swift 中添加模型类后,RSSelectionMenu 多项选择不起作用
- symfony - Symfony 4 中实体关系的奇怪问题
- c# - WPF DataGrid 单元格编辑中的异常
- css - 使用变换原点为 SVG 圆圈设置动画
- javascript - Google reCaptcha 的 IE11 中的 Javascript 错误
- javascript - 查看全部按钮显示隐藏的 div,然后更改为“少查看” - 如何让“少查看”重新隐藏以前隐藏的 div
- database - 如何在pentaho中用数据库连接替换笛卡尔连接
- go - 如何在 golang 中使用命令行工具启动和停止服务器