如何在 MS SQL 中通过 ENTITY FRAMEWORK CORE 代码首先使用条件(字符串 + 自动递增数字)创建 COMPUTED 列
How to create COMPUTED column in MS SQL by ENTITY FRAMEWORK CORE code first with condition (string + auto increment number)
我试图在 HasComputedColumnSql 的帮助下在 MS SQL 中创建一个计算列,但无法理解如何操作。
我的列条件是 "ABCD-Auto incremental value minimum 8 character"。
我想要值为 ABCD-00000001
的列
我已经在 SQL 查询中完成了,它正在运行。
创建 TABLE BikeParts (
BikeParts_GUID AS 'ABCD-' + RIGHT(REPLICATE('0', 8) + CONVERT(VARCHAR,
BikePart_ID), 8),
BikePart_ID INT 标识 (1, 1),
BikePart_Name 变量(100)
)</p>
<p>插入 BikeParts 值 ('Break Cable')
插入 BikeParts 值 ('Seat Cover')</p>
<p>SELECT * 来自 BikeParts
但无法在 entity framework 核心 2.2 中使用代码优先方法执行相同操作。
我将非常感谢任何形式的帮助。
经过大量搜索,终于找到了正确答案。
型号为:-
public partial class BikeParts
{
public int ID { get; set; }
public string BikePartsGuid { get; set; }
public int BikePartId { get; set; }
public string BikePartName { get; set; }
}
型号配置为:-
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.HasSequence<int>("BikePartIdHelper", schema: "dbo").StartsAt(1).IncrementsBy(1);
modelBuilder.Entity<BikeParts>(entity =>
{
entity.ToTable("BikeParts1");
entity.HasKey(e => e.ID);
entity.Property(e => e.ID).HasColumnName("ID").UseSqlServerIdentityColumn();
entity.Property(e => e.BikePartId).HasColumnName("BikePart_ID")
.HasDefaultValueSql("NEXT VALUE FOR dbo.BikePartIdHelper");
entity.Property(e => e.BikePartName)
.HasColumnName("BikePart_Name")
.HasMaxLength(100)
.IsUnicode(false);
entity.Property(e => e.BikePartsGuid)
.HasColumnName("BikeParts_GUID")
.HasMaxLength(13)
.IsUnicode(false)
.HasComputedColumnSql("('ABCD-'+right(replicate('0',(8))+CONVERT([varchar],[BikePart_ID]),(8)))");
});
}
我用过sequences for auto-generate BikePartId with the help of HasDefaultValueSql
在 BikePartsGuid 列上,我使用了 HasComputedColumnSql
我试图在 HasComputedColumnSql 的帮助下在 MS SQL 中创建一个计算列,但无法理解如何操作。
我的列条件是 "ABCD-Auto incremental value minimum 8 character"。
我想要值为 ABCD-00000001
我已经在 SQL 查询中完成了,它正在运行。
创建 TABLE BikeParts (
BikeParts_GUID AS 'ABCD-' + RIGHT(REPLICATE('0', 8) + CONVERT(VARCHAR,
BikePart_ID), 8),
BikePart_ID INT 标识 (1, 1),
BikePart_Name 变量(100)
)</p>
<p>插入 BikeParts 值 ('Break Cable')
插入 BikeParts 值 ('Seat Cover')</p>
<p>SELECT * 来自 BikeParts
但无法在 entity framework 核心 2.2 中使用代码优先方法执行相同操作。
我将非常感谢任何形式的帮助。
经过大量搜索,终于找到了正确答案。
型号为:-
public partial class BikeParts
{
public int ID { get; set; }
public string BikePartsGuid { get; set; }
public int BikePartId { get; set; }
public string BikePartName { get; set; }
}
型号配置为:-
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.HasSequence<int>("BikePartIdHelper", schema: "dbo").StartsAt(1).IncrementsBy(1);
modelBuilder.Entity<BikeParts>(entity =>
{
entity.ToTable("BikeParts1");
entity.HasKey(e => e.ID);
entity.Property(e => e.ID).HasColumnName("ID").UseSqlServerIdentityColumn();
entity.Property(e => e.BikePartId).HasColumnName("BikePart_ID")
.HasDefaultValueSql("NEXT VALUE FOR dbo.BikePartIdHelper");
entity.Property(e => e.BikePartName)
.HasColumnName("BikePart_Name")
.HasMaxLength(100)
.IsUnicode(false);
entity.Property(e => e.BikePartsGuid)
.HasColumnName("BikeParts_GUID")
.HasMaxLength(13)
.IsUnicode(false)
.HasComputedColumnSql("('ABCD-'+right(replicate('0',(8))+CONVERT([varchar],[BikePart_ID]),(8)))");
});
}
我用过sequences for auto-generate BikePartId with the help of HasDefaultValueSql 在 BikePartsGuid 列上,我使用了 HasComputedColumnSql