![](/img/trans.png)
[英]How to auto increment a column using an Entity Framework core in memory database?
[英]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.