Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQL Server标识赢得';t带输入的自动增量_C#_Sql Server_Asp.net Mvc - Fatal编程技术网

C# SQL Server标识赢得';t带输入的自动增量

C# SQL Server标识赢得';t带输入的自动增量,c#,sql-server,asp.net-mvc,C#,Sql Server,Asp.net Mvc,我正在尝试将数据发送到SQL Server数据库,该数据库具有ID主键设置,并具有要递增的Identity 从我到目前为止所读到的内容来看,大多数人都有在他们的命令代码中添加Id属性的问题,这是不必要的。我的没有,所以我想这可以工作,但我仍然收到一条错误消息,说明DB表不允许ID为null。因为我使用的是Identity,SQL不应该自动填充该列吗 我已经了解到,在模型中,您必须使用[DatabaseGenerated(DatabaseGeneratedOption.Identity)],但它仍

我正在尝试将数据发送到SQL Server数据库,该数据库具有
ID
主键设置,并具有要递增的
Identity

从我到目前为止所读到的内容来看,大多数人都有在他们的命令代码中添加
Id
属性的问题,这是不必要的。我的没有,所以我想这可以工作,但我仍然收到一条错误消息,说明DB表不允许ID为null。因为我使用的是Identity,SQL不应该自动填充该列吗

我已经了解到,在模型中,您必须使用
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
,但它仍然没有运行

模型

达尔

桌子

服务器管理器

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[Event]
(
    [Id] [int] NOT NULL,
    [EventType] [varchar](50) NOT NULL,
    [Title] [varchar](50) NOT NULL,
    [Date] [nchar](10) NOT NULL,
    [Time] [varchar](20) NOT NULL,
    [Location] [varchar](50) NOT NULL,
    [Company] [varchar](50) NULL,

    PRIMARY KEY CLUSTERED ([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]
) ON [PRIMARY]

作为旁注:您的
Time
列不是
Time
类型是否有原因?
DatabaseGenerated(DatabaseGeneratedOption.Identity)
仅适用于实体框架数据库集。由于您使用的是直接ADO,因此您装饰模型的方式与此无关。这并不能解释你的问题,但它应该缩小你的范围。好了,就这样。您的表实际上没有标识列。您应该注意这一行:
[Id][int]NOT NULL,
这表明您没有将
identity
属性应用于
Id
列。此外,
日期
列的类型是
nchar(10)
,而不是
日期
。你也要解决这个问题。
internal bool AddEvent(EventModel eventModel)
{
        // Connect to the database
        string connStr = configuration.GetConnectionString("ConnString") ;
        using SqlConnection conn = new SqlConnection(connStr);
        conn.Open();

        // Command
        string query = "INSERT INTO [dbo].[Event] ([EventType], [Title], [Date], [Location], [Company])" +
                       " VALUES (@EventType, @Title, @Date, @Location, @Company)";

        SqlCommand cmd = new SqlCommand(query, conn);
        cmd.Parameters.AddWithValue("@EventType", eventModel.EventType);
        cmd.Parameters.AddWithValue("@Title", eventModel.Title);
        cmd.Parameters.AddWithValue("@Date", eventModel.Date);
        cmd.Parameters.AddWithValue("@Location", eventModel.Location);
        cmd.Parameters.AddWithValue("@Company", eventModel.Company);

        // Query DB
        SqlDataReader reader = cmd.ExecuteReader();
        reader.Read();

        // Close Connection
        conn.Close();
        return true;
}
CREATE TABLE [dbo].[Event] 
(
    [Id]        INT         NOT NULL IDENTITY(1,1) PRIMARY KEY,
    [EventType] VARCHAR(50) NOT NULL,
    [Title]     VARCHAR(50) NOT NULL,
    [Date]      DATE        NOT NULL,
    [Time]      VARCHAR(20) NOT NULL,
    [Location]  VARCHAR(50) NOT NULL,
    [Company]   VARCHAR(50) NULL,
);
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[Event]
(
    [Id] [int] NOT NULL,
    [EventType] [varchar](50) NOT NULL,
    [Title] [varchar](50) NOT NULL,
    [Date] [nchar](10) NOT NULL,
    [Time] [varchar](20) NOT NULL,
    [Location] [varchar](50) NOT NULL,
    [Company] [varchar](50) NULL,

    PRIMARY KEY CLUSTERED ([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]
) ON [PRIMARY]