如何根据列是否正确在行中插入数据?
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 字段)。更改此副本上的金额,然后添加记录。
我希望能够根据社交号是否正确输入数据进行金额。我总是收到错误消息 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 字段)。更改此副本上的金额,然后添加记录。