创建新记录时出现上述错误。我不想插入身份——数据库是自动生成的,这很好。
这是确切的例外:
[System.Data.UpdateException]
{"An error occurred while updating the entries. See the inner exception for details."}
{"Cannot insert explicit value for identity column in table 'PartRevisions' when IDENTITY_INSERT is set to OFF."}
以下是映射:
Public Class PartContext
Inherits DbContext
Public Property Parts As DbSet(Of Part)
Public Property PartRevisions As DbSet(Of PartRevision)
Protected Overrides Sub OnModelCreating(modelBuilder As DbModelBuilder)
MyBase.OnModelCreating(modelBuilder)
modelBuilder.Entity(Of PartRevision)().HasKey(Function(r) r.Id).Property(Function(r) r.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity)
End Sub
End Class
<Table("Parts")>
Public Class Part
<Key(), DatabaseGenerated(DatabaseGeneratedOption.Identity)>
Public Property Id As Integer
Public Property PartNumber As String
Public Property Owner As String
End Class
<Table("PartRevisions")>
Public Class PartRevision
Inherits Part
Public Property OriginalId As Integer
Public Property RevisionDate As DateTime
Public Property RevisionNumber As Integer
Public Property RevisionBy As String
End Class
如果我不使用继承,它可以正常工作。如果我使 Id 可覆盖并且还指定子类的属性,它仍然不起作用。
我做OnModelCreating
这些只是因为我想让它工作。我觉得没有这个应该可以工作。当然,它甚至不适用于这个......
当我在 SQL Management Studio 中执行以下查询时,它可以正常工作:
insert into PartRevisions (originalid, revisiondate, revisionnumber, revisionby, partnumber, owner)
values (1, '1/1/2013', 1, 'eep', '123', 'ME')
这是完整程序的要点。我在一个测试项目中对此进行了尝试,因为我认为在 EF 中进行继承时会遇到一些问题(还没有完成)。
https://gist.github.com/eyston/4956444
谢谢!