我已经在一个asp mvc项目上工作了几个星期。我已经使用没有问题的实体通过linq从数据库中插入和删除了东西。现在直到。
我用默认布局创建了我的项目。所以在用户注册后的AccountController上我想在我的数据库中注册信息
Client:
IdClient
Name
LastName
我通过表单询问此信息,并执行此操作:
Client client = new Client();
client.Name = model.Name;
client.LastName = model.LastName
storeDB.Clients.Add(client);
storeDB.SaveChanges();
Note that I'm not attempting to insert anything on the IdClient
The class looks like:
public class Client{
[Key]
public int IdClient {get; set;}
public string Name {get; set;}
public string LastName {get; set;}
}
我已经在其他表中插入没有问题,但是这个给了我一个: 当IDENTITY_INSERT设置为OFF时,无法在表'Client'中为identity列插入显式值。
异常详细信息:System.Data.SqlClient.SqlException:当IDENTITY_INSERT设置为OFF时,无法在表'Client'中为identity列插入显式值。
我查了一下,桌子上的一切看起来都很正常,身份只有IdClient !!有人知道我为什么会这样吗? = S我不认为它与我在AccountController中执行此插入的事实有任何关系,它没有意义....
更新:我插入另一张桌子并没有标记我的错误,我不明白......我创造了它们一样!我创建了一个名为CLIENT的JUST One表的数据库,它不工作!有人知道我在哪里可以找到问题吗? = S
-I 不想要在标识列中插入一个值,我尝试在show table数据上添加一个新行,我手动将值引入Name和Last name,单击ENTER和该行已创建,但当我通过查询执行时,它不允许我。
谢谢!
答案 0 :(得分:0)
检查映射类的主键。它应该有这样的属性:
[Column(Storage="_LetterOID", AutoSync=AutoSync.OnInsert,
DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
重要的是IsDbGenerated = true。如果您的属性不足,我们发现了错误!如果您正在使用设计器,只需重新生成此类(通过删除设计器中的表并将其从服务器资源管理器中删除)。
之前,我解决了这个问题。
答案 1 :(得分:0)
正如安德烈所说,检查你的设计师。 编写两个表并确认有效的表确实具有标识列。 尝试为两个插入运行探查器,它们是否同样插入所有列?
需要更多信息才能回答这个问题。