实体框架不允许在 localdb (Mvc 4- C#) 中插入列

Posted

技术标签:

【中文标题】实体框架不允许在 localdb (Mvc 4- C#) 中插入列【英文标题】:Entity Framework does not allow to insert a column in localdb (Mvc 4- C#) 【发布时间】:2015-02-28 18:27:01 【问题描述】:

我使用 Visual Studio 2012 创建了一个 ASP.NET MVC 4 应用程序。该应用程序很正常,我没有做任何花哨的事情。确实根本不用编码。

(默认应用似乎使用 Localdb,使用 AccountController 实现的简单成员资格)

我运行了应用程序,点击了Register 并创建了一个用户。

然后,我去了Server Explorer,导航到表格UserProfile,右击表格并点击New Query

并执行了这个查询

insert into dbo.UserProfile (UserId,UserName) 
values ("test", "test")

这会导致

消息 207,第 16 级,状态 1,第 1 行 列名“test”无效。 消息 207,第 16 层,状态 1,第 1 行 列名“测试”无效。

注意:我也使用Package Manager Console 执行了Enable-Migrations,但错误消息仍然出现。

有什么想法吗?

更新 1:

根据@CodeCaster 的回答,我用 ['] 单引号执行,它似乎工作正常。

但是,现在我明白了

当 IDENTITY_INSERT 设置为 OFF 时,无法为表“UserProfile”中的标识列插入显式值

【问题讨论】:

这与实体框架有什么关系? 如果UserId 是一个Identity 列,那么您应该 向其中插入任何值 - SQL Server 会为您执行此操作! 【参考方案1】:

在 SQL 中使用单引号...('test', 'test')

【讨论】:

非常感谢,这似乎很好。但是,我收到一条错误消息,提示 Cannot insert explicit value for identity column in table 'UserProfile' when IDENTITY_INSERT is set to OFF. 有什么想法吗? Try the search. @CodeCaster 你真快 :) @CodeCaster:很棒的发现。非常感谢 CodeCaster。简而言之,我试图插入一个 ID,但似乎 Sql 会自动创建 Id。但是,困扰我的问题是In MVC 4 EF, how do one assign roles easily without writing Sql statements to do it ? Is there some easy method ? 使用Web Site Administration Tool。【参考方案2】:

试试这个代码

insert into dbo.UserProfile (UserId,UserName) values ('test','test')

您正在使用 " 而不是 '"test" 更改为 'test'

单引号用于表示 SQL 中字符串的开始和结束。 SQL中一般不使用双引号

【讨论】:

谢谢阿伦。但是,我们应该只使用 rule-syntaxSingle quotes while inserting to a table? 。关于文档的任何想法? http://***.com/questions/11321491/when-to-use-single-quotes-double-quotes-and-backticks得到答案 @nowhewhomustnotbenamed。编码愉快

以上是关于实体框架不允许在 localdb (Mvc 4- C#) 中插入列的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 localDB 将 ASP.NET MVC 4 应用程序部署到 Windows 7 上的本地 IIS?

使用 MVC 4 将实体框架与 Oracle 11g 连接时面临的问题

不使用实体框架的 MVC 架构

版本 11 的 localdb 的连接字符串是啥

LocalDB:你如何删除它?

我应该使用实体框架 4.1 和 MVC3 启用或禁用动态代理吗?