如何使用 C# 为具有标识和计算的主键列的 SQL Server 表在 .NET 中构建用于 CRUD 操作的 EF Core 模型?

问题描述 投票:0回答:0

我正在尝试使用 Entity Framework Core 和 PFB 我的 SQL Server 表创建一个简单的服务器端 Blazor CRUD 应用程序。

到目前为止,我已经花费了大量时间来寻找解决方案,但我失败了。我可以编辑和删除记录,但无法插入任何记录。

出于某种原因,

Insert
语句总是尝试从 Entity Framework Core 插入
D_ID
。我们尝试了多种选择,例如,
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
代表
D_ID
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
代表
D_ID
等.....没有运气。

如果有人可以快速尝试并找到解决方案/解决方法 - 那将非常有帮助。非常感谢,

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[TBL_NAME]
(
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [D_ID] AS ('DID' + RIGHT('000000' + CONVERT([varchar]6), [ID]), (6))) PERSISTED NOT NULL,
    [NAME] [varchar](50) NOT NULL,
    [IS_ENABLED] [bit] NULL,
    [ADDRESS] [varchar](2000) NULL,

    CONSTRAINT [Pk_TBL_NAME_D_ID] 
        PRIMARY KEY CLUSTERED ([D_ID] ASC)
                    WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, 
                          IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, 
                          ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY],
    CONSTRAINT [UNQ_TBL_NAME_D_ID] 
        UNIQUE NONCLUSTERED ([NAME] ASC)
               WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, 
                     IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, 
                     ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[TBL_NAME] 
    ADD CONSTRAINT [defo_TBL_NAME_IS_ENABLED] DEFAULT ((1)) FOR [IS_ENABLED]
GO

我们尝试了很多选择,比如

  • [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    D_ID
  • [DatabaseGenerated(DatabaseGeneratedOption.Computed)]
    D_ID

等.....到目前为止没有运气。

c# sql entity-framework-core calculated-columns
© www.soinside.com 2019 - 2024. All rights reserved.