如何根据列是否正确在行中插入数据?

How do i insert data in a row based on whether a column is correct?

我希望能够根据社交号是否正确输入数据进行金额。我总是收到错误消息 SqlException: Cannot insert explicit value for identity column in table 'Customers' when IDENTITY_INSERT is set to OFF.。我试图对数据库发出 sql 命令并将身份设置为 ON,但我仍然遇到相同的错误。是否可以做我想做的事?

我的Class

public class AddAmount : IAddAmount
    {
        private readonly ApplicationDbContext _db;

        public AddAmount(ApplicationDbContext db)
        {
            _db = db;
        }

        public void Insert(int number)
        {
            Console.WriteLine("Add your amount you would like to insert: ");

                try
                {

                var addAmount = _db.Customers.SingleOrDefault(x => x.SocialNumber == number);
                addAmount.Amount = Convert.ToInt32(Console.ReadLine());
                 _db.Database.ExecuteSqlInterpolated($"SET IDENTITY_INSERT dbo.Customers ON");
                _db.Add(addAmount);
                _db.SaveChanges();

                }
                catch (Exception)
                {

                    throw;
                }
        }

    }

这取决于您希望程序执行的操作。

我了解到您有一位客户 table。它已经充满了 customer-data。您想要更新 金额。在这种情况下,不需要 Add(从而插入)一条记录。你应该简单地省略这个语句

_db.Add(addAmount);

您可能希望插入一个具有此数量的新记录(在这种情况下这不合逻辑,因为这会导致您的 table 中出现重复的 'customers')。然后你应该首先从你的数据库中获取一个客户。创建此对象的新副本,其中包含客户所需的所有字段(但不复制 ID 字段)。更改此副本上的金额,然后添加记录。