我有一個我用來測試Fluent API的解決方案。當試圖設置十進制精度時,只有在將調用放入OnModelCreating方法並通過實體時才能正確更新數據庫。當試圖使用EntityTypeConfiguration類時,數據庫拒絕更新。 MilesFromNearestAirport是有問題的財產。如何在Entity Framework和Code First中使用流利的api指定小數精度?
住宿型號
Public Class Lodging
Public Property LodgingId As Integer
Public Property MilesFromNearestAirport As Decimal
End Class
的DbContext類
Public Class BreakAwayContext
Inherits DbContext
Public Property Lodgings As DbSet(Of Lodging)
Protected Overrides Sub OnModelCreating(modelBuilder As DbModelBuilder)
modelBuilder.Configurations.Add(New LodgingConfiguration)
End Sub
End Class
寄宿配置類
Public Class LodgingConfiguration
Inherits EntityTypeConfiguration(Of Lodging)
Public Sub LodgingConfiguration()
[Property](Function(l) l.MilesFromNearestAirport).HasPrecision(8, 1)
End Sub
End Class
我使用測試控制檯應用程序。這裏是副主()
Sub Main()
Database.SetInitializer(New DropCreateDatabaseAlways(Of BreakAwayContext))
End Sub
正如你所看到的,我不管更改模型刪除和重建數據庫中的每個運行。如果我將小數精度配置設置放在OnModelCreating方法中,一切都很好。
Protected Overrides Sub OnModelCreating(modelBuilder As DbModelBuilder)
modelBuilder.Entity(Of Lodging).Property(Function(l) l.MilesFromNearestAirport).HasPrecision(8, 1)
End Sub
是否有使用EntityTypeConfiguration或有沒有人有,我可能出了問題有什麼建議任何限制?我將發佈生成的數據庫表的圖片,但由於我的聲望點,我無法發佈圖像。請讓我知道如果您想了解有關類,解決方案,環境等的信息,我正在使用EF6,.NET4,VB.NET和SQL Server Express。
這很奇怪。看起來對我來說都很好。 (我對VB不夠熟悉,但是'[Property]'在這種情況下與'Me.Property'相同,對嗎?)只有'HasPrecision'或其他任何Fluent API代碼纔有這個問題嗎? – Slauma
@Slauma - 是的,我相信'[Property]'和'Me.Property'是一樣的,但是當我回到電腦前時(我現在在平板電腦上)時,我會仔細檢查。我也隨意地注意到其他配置的問題。例如,我無法通過'EntiyTypeConfiguration'設置'Key'配置。我也必須使用'OnModelCreating'。但其他配置設置工作得很好。我從發佈的代碼中刪除了其他配置,以便於閱讀。 – macoms01