繁体   English   中英

如何首先通过带有条件(字符串+自动递增编号)的ENTITY FRAMEWORK CORE代码在MS SQL中创建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-自动增量值最少8个字符”
我想要值为ABCD-00000001的列

我已经在SQL查询中完成了它,并且正在工作。

CREATE TABLE BikeParts ( BikeParts_GUID AS 'ABCD-' + RIGHT(REPLICATE('0', 8) + CONVERT(VARCHAR, BikePart_ID), 8), BikePart_ID INT IDENTITY(1, 1), BikePart_Name VARCHAR(100) )

INSERT INTO BikeParts VALUES ('Break Cable') INSERT INTO BikeParts VALUES ('Seat Cover')

SELECT * FROM BikeParts

但是无法使用代码优先方法在实体框架核心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)))");
        });        
 }

我用序列的帮助下用于自动生成BikePartId HasDefaultValueSql和BikePartsGuid列我用HasComputedColumnSql

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM