[英]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.