无法将显式值插入标识列INSERT_OFF

时间:2011-04-21 00:27:13

标签: asp.net asp.net-mvc linq linq-to-entities

我已经在一个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和该行已创建,但当我通过查询执行时,它不允许我。

谢谢!

2 个答案:

答案 0 :(得分:0)

检查映射类的主键。它应该有这样的属性:

    [Column(Storage="_LetterOID", AutoSync=AutoSync.OnInsert, 
     DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]

重要的是IsDbGenerated = true。如果您的属性不足,我们发现了错误!如果您正在使用设计器,只需重新生成此类(通过删除设计器中的表并将其从服务器资源管理器中删除)。

之前,我解决了这个问题。

答案 1 :(得分:0)

正如安德烈所说,检查你的设计师。 编写两个表并确认有效的表确实具有标识列。 尝试为两个插入运行探查器,它们是否同样插入所有列?

需要更多信息才能回答这个问题。