实体框架不允许在 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-syntax
吗 Single 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?