简体   繁体   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)

I'm trying to create a computed column in MS SQL with the help of HasComputedColumnSql , But unable to understand How. 我正在尝试借助HasComputedColumnSql在MS SQL中创建一个计算列,但无法理解操作方法。
My condition for column is "ABCD-Auto incremental value minimum 8 character" . 我的输入条件是“ ABCD-自动增量值最少8个字符”
I want the column with value ABCD-00000001 我想要值为ABCD-00000001的列

I have done it in SQL query and it is working. 我已经在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

But unable to do same in entity framework core 2.2 with code first approach. 但是无法使用代码优先方法在实体框架核心2.2中执行相同的操作。
I will be really thankful for any kind of help. 我将非常感谢您提供的任何帮助。

After a lot of search, finally I got the correct answer. 经过大量搜索,终于得到了正确答案。

Model is:- 型号是:-

public partial class BikeParts
    {
        public int ID { get; set; }
        public string BikePartsGuid { get; set; }
        public int BikePartId { get; set; }
        public string BikePartName { get; set; }
    }

And configuration of model is:- 型号配置为:

 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)))");
        });        
 }

I used sequences for auto-generate BikePartId with the help of HasDefaultValueSql and on BikePartsGuid column I used HasComputedColumnSql 我用序列的帮助下用于自动生成BikePartId HasDefaultValueSql和BikePartsGuid列我用HasComputedColumnSql

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

相关问题 如何使用内存数据库中的实体框架核心自动增加列? - How to auto increment a column using an Entity Framework core in memory database? 我应该如何访问Entity Framework Code First中的计算列? - How should I access a computed column in Entity Framework Code First? 实体框架代码首先使用一列作为主键,另一列作为自动增量列 - Entity Framework Code First Using One column as Primary Key and another as Auto Increment Column 如何在 Entity Framework Core 中模拟 SQL 触发器(代码优先)? - How to emulate a SQL trigger in Entity Framework Core (code first)? 使用代码优先时如何使Entity Framework自动递增ID - How to make Entity Framework auto-increment IDs when using code-first 如何从实体框架代码优先方法自动增加 oracle 表? - How to auto-increment oracle table from Entity Framework code-first approach? 实体框架核心-如何通过编程关闭自动增量? - Entity Framework Core - how to programmability turn off auto increment? 在C#实体框架迁移中创建计算的字符串列 - Create computed string column in C# Entity Framework migrations 实体框架代码优先:使用种子和增量值初始化标识列 - Entity Framework Code First: Initialize Identity Column with Seed and Increment Values 实体框架核心自动增量无法正常工作 - Entity Framework Core Auto Increment not working correctly
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM