gpt4 book ai didi

c# - 尝试在数据库表中插入新条目时出现 LINQ to SQL 异常

转载 作者:搜寻专家 更新时间:2023-10-30 19:54:58 25 4
gpt4 key购买 nike

我试图通过 LINK 到 SQL 将用户插入到我的数据库中,但出现异常:

Cannot insert the value NULL intocolumn 'UserID', table'mydatabase.developer.Users'; columndoes not allow nulls. INSERT fails.The statement has been terminated.

我已将 UserID 标记为我的 Users 表中的主键,并且我希望在我尝试在表中插入新用户时 SQL Server 会自动生成一个 PK。

我几乎复制并粘贴了 Pro ASP.NET MVC Framework 中的示例第 4 章“设置 LINQ to SQL”部分。一切都井井有条...我的数据库有一个 Users 表,其中包含一个 UserID (PK) 列和一个 Name 列(均不可为 null),下面是与数据库表对应的类:

public class User
{
[DisplayName("User ID")]
[Column(IsPrimaryKey=true, IsDbGenerated=true, AutoSync=AutoSync.OnInsert)]
internal int UserID { get; set; }

[DisplayName("Name")]
[Column]
public string Name{ get; set; }
}

我还有一个允许我修改数据库的存储库类:

public class UsersRepository : IUsersRepository
{
private DataContext database;
private Table<User> usersTable;

public UsersRepository(string connectionString)
{
database = new DataContext(connectionString);
usersTable = database.GetTable<User>();
}

public void AddUser(User user)
{
usersTable.InsertOnSubmit(user);
try
{
database.SubmitChanges();
}
catch (Exception e)
{
var msg = e.Message;
}
}
//...
}

IUsersRepository ur = new UsersRepository(connectionString);
ur.AddUser(new User{Name = "Joe"});

我也试过将 UserID 设置为 -1、0 和 1,但我得到了同样的异常!

ur.AddUser(new User{UserID = -1, Name = "Joe"});
ur.AddUser(new User{UserID = 0, Name = "Joe"});
ur.AddUser(new User{UserID = 1, Name = "Joe"});

有人知道这里会发生什么吗?我真的很困惑:什么会导致 SQL 服务器不生成主键?有什么方法可以检查插入语句并验证实际发送到服务器的内容吗?

最佳答案

你的主键是整数吗?您需要设置身份规范: enter image description here

如果您使用的是唯一标识符之类的东西,则需要在客户端上生成

User user = new User();

user.Id = Guid.NewGuid();

关于c# - 尝试在数据库表中插入新条目时出现 LINQ to SQL 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5071849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com