我已经在一个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'中插入标识列的显式值。
异常详细信息:System.Data.SqlClient.SqlException:当IDENTITY_INSERT设置为OFF时,不能在表'Client'中插入标识列的显式值。
我检查了一下,桌子上的一切看起来都很正常,身份只有IdClient!!有人知道我为什么会得到这个吗?=S我不认为这与我在AccountsController中插入这个事实有任何关系,这没有意义....
UPDATE:我插入到另一个表,它没有标记我的错误,我不明白…我把它们创建成一样的!我创建了一个数据库,只有一个名为CLIENT的表,它不工作!有人知道我在哪里可以找到问题吗?= S
-I 不想要插入一个值到标识列,我尝试在显示表数据上添加一个新行,我手动引入值到Name和Last Name,单击ENTER并创建行,但是当我通过查询它不让我。
谢谢!
检查映射类上的主键。它应该有一个像这样的属性:
[Column(Storage="_LetterOID", AutoSync=AutoSync.OnInsert,
DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
重要的一点是IsDbGenerated=true。如果您的属性缺少该属性,则我们发现了错误!如果您正在使用设计器,只需重新生成该类(通过删除设计器中的表并将其从服务器资源管理器中删除)。
正如Andrei所说,检查你的设计师。编写这两个表的脚本,并确认工作的表确实有标识列。尝试为两个插入运行分析器,它们插入的所有列都相同吗?
需要更多的信息来回答这个问题