Vb.net 如何首先使用实体框架和代码的fluent api指定十进制精度?

Vb.net 如何首先使用实体框架和代码的fluent api指定十进制精度?,vb.net,entity-framework,ef-code-first,precision,fluent-interface,Vb.net,Entity Framework,Ef Code First,Precision,Fluent Interface,我有一个用于测试Fluent API的解决方案。当试图设置十进制的精度时,只有将调用放入OnModelCreating方法并遍历实体,数据库才会正确更新。尝试使用EntityTypeConfiguration类时,数据库拒绝更新。MilesFromneareStarport是相关财产 住宿模式 Public Class Lodging Public Property LodgingId As Integer Public Property MilesFromNearestAirp

我有一个用于测试Fluent API的解决方案。当试图设置十进制的精度时,只有将调用放入OnModelCreating方法并遍历实体,数据库才会正确更新。尝试使用EntityTypeConfiguration类时,数据库拒绝更新。MilesFromneareStarport是相关财产

住宿模式

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
我正在使用一个控制台应用程序进行测试。这是次主控()

如您所见,每次运行时,我都会删除并重新创建数据库,而不考虑模型的更改。如果我在OnModelCreating方法中设置decimal precision配置,一切正常

    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。

好的,我发现了问题,以防其他人遇到此问题。我正在制作C#示例,并使用在线转换器将它们转换为VB。我不太熟悉C语言,因此错误地转换了代码

此行
公共子住宿配置()

应该是
Public Sub New()


这似乎解决了所有问题。谢谢@Slauma的关注

这太奇怪了。我觉得一切都很好。(我对VB不太熟悉,但是
[Property]
在这个上下文中与
Me.Property
是一样的,对吧?)你只有
HasPrecision
或者其他流畅的API代码有这个问题吗?@Slauma-是的,我相信“[Property]”与“Me.Property”是一样的,但当我回到电脑前(我现在在平板电脑上)时,我会再次检查。我还随机注意到了其他配置的问题。例如,我也无法通过“EntityTypeConfiguration”设置“Key”配置。我还必须使用“OnModelCreating”。但其他配置设置也可以正常工作。我从发布的代码中删除了我正在使用的其他配置,以使其更易于阅读。Aaaaaah,换句话说
Public Sub-lodingConfiguration()
不是类构造函数。好吧,如果你不太熟悉C#,你可以很容易地错误地转换这个,但是如果你不太熟悉VB(像我一样):)我从来没有见过这个。祝贺你解决了这个问题!哈哈,是的,我在阅读您的原始代码并试图找出定义实体类型配置的正确方法时看到了这一点,就像“他为什么要在vb.net中自行命名构造函数”?很高兴知道,谢谢你的发帖。附言:我还得把C#的所有东西都转换过来。为什么没有更多的VB程序员?
    Protected Overrides Sub OnModelCreating(modelBuilder As DbModelBuilder)
        modelBuilder.Entity(Of Lodging).Property(Function(l) l.MilesFromNearestAirport).HasPrecision(8, 1)
    End Sub
Public Class LodgingConfiguration
    Inherits EntityTypeConfiguration(Of Lodging)

    Public Sub LodgingConfiguration()
        [Property](Function(l) l.MilesFromNearestAirport).HasPrecision(8, 1)
    End Sub

End Class
Public Class LodgingConfiguration
    Inherits EntityTypeConfiguration(Of Lodging)

    Public Sub New()
        [Property](Function(l) l.MilesFromNearestAirport).HasPrecision(8, 1)
    End Sub

End Class