【发布时间】:2011-08-20 22:08:44
【问题描述】:
在 Entity Framework 4.1 Code First 中手动生成主键的最佳方法是什么?
我正在编写 ASP.NET MVC 3 并且我使用存储库模式。
我目前使用以下代码按顺序生成密钥:
'Code First Class
Public Class Foo
<Key()>
<DatabaseGenerated(DatabaseGeneratedOption.None)>
Public Property iId As Integer
Public Property sBar As String
End Class
'Context Class
Public Class FooBarContext : Inherits DbContext
Public Property Foos As DbSet(Of Foo)
End Class
'Get the current Id
'Part of code in repository that stores Entity Foo.
Dim iCurrId as Integer = (From io In context.Foo
Select io.iId()).Max
Dim iNewId as Integer = iCurrId + 1
Foo.iId = iNewId
我担心(尽管不太可能)两个(或更多)用户会尝试同时保存一个实体 Foo,因此会获得相同的 ID,插入会失败。
这是一个好方法,还是有更好的方法?
请注意我不能(也不会)使用数据库生成的身份字段!
【问题讨论】:
-
为什么不用身份?
标签: sql-server vb.net ef-code-first entity-framework-4.1