【发布时间】:2016-07-20 17:35:04
【问题描述】:
我目前正在开发一个 MVC 项目,使用实体框架和 SQL Express 服务器。
我正在尝试将用户添加到用户表。用户目前受到以下威胁:
CREATE TABLE [dbo].[Users] (
[UserID] INT NOT NULL PRIMARY KEY,
[Admin] BIT NOT NULL,
);
当我通过下面的函数添加到上表中时:
[HttpPost]
public String AddUser(List<String> values)
{
using (DataBASE db = new DataBASE())
{
Users newUser = new Users();
newUser.UserID = Int32.Parse(values[0]); //There is correct data stored here as an int value
newUser.Admin = Boolean.Parse(values[1]); //There is correct data stored here as an bool value
db.Users.Add(newUser); //The newUser object is correct
db.SaveChanges(); //The error occurs here
}
return "success";
}
编辑,这是请求的用户类(每当存储到数据库中时都会更改为字符串):
[Table("Users")]
public class Users
{
[Key]
public int UserID { get; set;}
public bool Admin { get; set; }
}
我收到以下错误:
"Cannot insert the value NULL into column UserID, table ‘…\\DATABASE.MDF.dbo.Users';
column does not allow nulls. INSERT fails.\r\nThe statement has been terminated."}
该值不为 NULL,并且数据库连接正确(因为删除功能正常工作,当我闯入该功能时,数据库连接是正确的,并且该功能在通过添加新用户进行更新之前提供正确的数据。
当我将数据库更改为以下内容时:
CREATE TABLE [dbo].[Users] (
[UserID] NVARCHAR(50) NOT NULL PRIMARY KEY,
[Admin] BIT NOT NULL,
);
我使用以下函数添加了一个用户(将上面的函数更改为不传递 int 而是保留字符串值):
[HttpPost]
public String AddUser(List<String> values)
{
using (DataBASE db = new DataBASE())
{
Users newUser = new Users();
newUser.UserID = values[0]; //There is correct data stored here as an string value
newUser.Admin = Boolean.Parse(values[1]); //There is correct data stored here as an bool value
db.Users.Add(newUser); //The newUser object is correct
db.SaveChanges(); //NO error occurs here
}
return "success";
}
这是将用户类更改为字符串以适用于字符串解决方案:
[Table("Users")]
public class Users
{
[Key]
public string UserID { get; set;}
public bool Admin { get; set; }
}
是否有反对在数据库中使用我不知道的 INT 值?
【问题讨论】:
-
在你的c#代码中,你的
newUser.UserID是什么数据类型? -
显示您的
Users课程。并且不相关,但请以单数形式命名您的班级。很可能您的 ID 设置了身份标志。 -
@Baraa 尝试直接插入,你可能会找到答案
-
@JohnBustos & Mathew 我已经添加了用户类及其当前类型,目前是一个 int。
-
@ARUN 手动插入数据库?或者写出我自己的 SQL 语句而不是使用 Add 函数?我手动插入,无论变量是什么,它都可以正常工作。但可能会写出我自己的SQL语句
标签: c# .net asp.net-mvc entity-framework sql-server-express