小编Mik*_*ion的帖子

如何在INSERT期间让EF 6在数据库上处理DEFAULT CONSTRAINT

我是EF的新手(这是我的第一周),但对数据库或编程并不陌生.其他人也提出了类似的问题,但我觉得它没有被问到正确的细节,或者解释得非常需要解释,所以我走了.

问题: 如何让Entity Framework正确处理数据库中执行INSERT时定义了DEFAULT CONSTRAINT的列?这意味着,如果我在插入操作期间没有在模型中提供值,如何让EF从其生成的TSQL INSERT命令中排除该列,以便数据库定义的DEFAULT CONSTRAINT可以工作?

背景

我有一个我创建的简单表,只是为了测试Entity Framework 6(EF6)及其与SQL Server能够更新的列的交互.这使用了IDENTITY,TIMESTAMP,COMPUTED和一些应用了DEFAULT CONSTRAINT的列.

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[DBUpdateTest](
    [RowID] [int] IDENTITY(200,1) NOT NULL,
    [UserValue] [int] NOT NULL,
    [DefValue1] [int] NOT NULL,
    [DefValue2null] [int] NULL,
    [DefSecond] [int] NOT NULL,
    [CalcValue]  AS 
        (((([rowid]+[uservalue])+[defvalue1])+[defvalue2null])*[defsecond]),
    [RowTimestamp] [timestamp] NULL,
    CONSTRAINT [PK_DBUpdateTest] PRIMARY KEY CLUSTERED 
    (
        [RowID] ASC
    )
    WITH 
    (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF,
    ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) 
) 
GO
ALTER TABLE [dbo].[DBUpdateTest] …
Run Code Online (Sandbox Code Playgroud)

c# sql-server entity-framework default-constraint

22
推荐指数
1
解决办法
7957
查看次数