2013-05-27 99 views
0

嗯,当我试图插入新值时,我有一个奇怪的例外。请参阅attached files进一步调查。 所以,我用:PRIMARY KEY的值被识别为NULL(EF6代码优先)

  • SQL Server 2012的

  • VS 2012更新2

  • EF6的Alpha 3的Code First

的问题是我想将新值插入名为dbo.Worker2的简单表(请参阅“Worker2表”图像文件),该表由2列组成:TableNumber和Name。 TableNumber列是整数数据类型的主键(请参阅“主键列属性”图像文件)。我已经安装了最新的EF6 alpha3并尝试插入新值(请参阅“VB.NET代码”图像文件)。但是,引发异常:“无法将NULL值NULL插入到'TableNumber'列中,表Bonus.dbo.Worker2';列不允许空值,INSERT失败。” (请参阅“VS异常”图像文件)。

然后我决定看看用SQL Server Profiler发送给SQL Server的T-SQL查询是什么,并且很惊讶EF没有发送TableNumber(参见“Profiler Queries”图像文件)。

它是错误还是我错过了什么?

回答

0

我认为主键没有设置为标识。

+0

你可以从“主键列属性”的形象看,这不是身份。 – JohnyL

3

通过它的外观,您需要将您的Worker2主键属性设置为非数据库生成。

类似:

<Key, DatabaseGenerated(DatabaseGeneratedOption.None)> 
Public Property TableNumber As Integer 
+0

属性(x => x.TableNumber).HasColumnName(“TableNumber”)。IsRequired()。HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);使用流畅的API –