【问题标题】:id entering as 0 in database in MS SQL Serverid 在 MS SQL Server 的数据库中输入为 0
【发布时间】:2019-12-27 11:21:51
【问题描述】:

所以我在这里的代码有一些问题,因为我是 C# 和 linq 的新手。 我正在尝试将 id、icon_url 和计数值插入到我的数据库中。但是当我插入第一行时,id 设置为 0,当我添加另一行时,我得到了两个错误。我想自动增加 ID,因为它是主键并且是 int 类型。我怎样才能解决这个问题? 请参阅下面的代码和屏幕截图。

图片

数据库

数据库设计

错误 1

错误 2

代码:

bool imcount = db.dashboards.Any(dash => dash.icon_url.Contains(imageurl));
  if (imcount == false)
  {
    using (ECardModel db = new ECardModel())
    {


      dashboard imageCount = new dashboard()
      {

        icon_url = imageurl,
        count = 1
      };

      db.dashboards.Add(imageCount);
      db.SaveChanges();
    }
  }
  else if (imcount == true)
  {
    using (ECardModel db = new ECardModel())
    {
      int icount = db.dashboards.Where(dash => dash.icon_url.Contains(imageurl)).Max(dash => dash.count);

      dashboard imageCount = new dashboard()
      {
        count = icount + 1
      };
      db.dashboards.Add(imageCount);
      db.SaveChanges();
    }
  }

更新:

当我将身份规范设置为“是”时,它又给了我一个错误。 请注意,我无法更新我的 .edmx 模型,因为它是 xml 格式并且不显示模型图。此外,数字 0 仍插入数据库中。 请看下图。

【问题讨论】:

  • 分享你的表模式,好像你只是把你的列作为主键,而不是在上面的代码中设置任何值。
  • 为 Id 列设置 IDENTITY_INSERT ON(在数据库表中)并刷新您的模型。
  • @DarkRob 是的,你是对的,但我不知道如何添加和自动增加 id 的值。

标签: c# sql-server linq linq-to-sql


【解决方案1】:

您无法使用查询将任何列更新为从前端自动递增。

您有 3 个选项:

选项 1:-
使用 SQL 管理工作室对其进行更新。

选项 2:- 删除您的列并创建新列。如果当前表中没有记录。 但这会改变列的序号位置。

-- ID is the name of the  [to be] identity column
ALTER TABLE [yourTable] DROP COLUMN ID 
ALTER TABLE [yourTable] ADD ID INT IDENTITY(1,1)

选项 3:

您可以删除当前表并使用设置为IDENTITY 的列重新创建它


CREATE TABLE [dbo].[table](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    ...
    CONSTRAINT [PK_table] PRIMARY KEY CLUSTERED 
(
    [Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

【讨论】:

  • 我尝试了您的解决方案,但又遇到了另一个错误。请参阅上面的更新。感谢您的帮助。
  • 似乎您在id 列中插入值,这不是必需的,因为它是自动生成的。无需为新插入的行设置 id。
  • 是的,你是对的。但问题是我不知道这个值被插入到哪里,因为我刚刚得到这个项目来处理。有什么办法可以查到吗?
  • 请找到此链接以供参考stackoverflow.com/questions/8835434/…
猜你喜欢
  • 2014-05-18
  • 2011-02-06
  • 1970-01-01
  • 2011-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-20
相关资源
最近更新 更多