Fluent Nhibernate配置方法不会编译 - 表达式不会产生值

时间:2014-08-25 08:36:32

标签: vb.net lambda fluent-nhibernate

以下代码无法编译。使用新SchemaExport(cfg).Create(True,True) - 表达式不会产生值。 我是Nhibernate的新手。我错过了什么吗?这是来自C#的代码的转换,符合罚款。

Imports System.Configuration
Imports FluentNHibernate.Cfg
Imports FluentNHibernate.Cfg.Db
Imports NHibernate
Imports NHibernate.Tool.hbm2ddl
Imports Ninject.Activation
Imports Ninject.Modules
Imports OSIM.Core
Imports Configuration = NHibernate.Cfg.Configuration

Public Class IntegrationTestsModule  
    Inherits NinjectModule

    Public Overrides Sub Load()
        Bind(Of IItemTypeRepository).To(Of ItemTypeRepository)()
        Bind(Of ISessionFactory).ToProvider(New ntegrationTestSessionFactoryProvider)
    End Sub
End Class


Class IntegrationTestSessionFactoryProvider
    Inherits Provider(Of ISessionFactory)

    Protected Overrides Function CreateInstance(context As IContext) As ISessionFactory

        Dim sessionFactory = Fluently.Configure().
            Database(MsSqlConfiguration.MsSql2008.ConnectionString(Function(c) c.Is(ConfigurationManager.AppSettings("localDb"))).ShowSql()). _
            Mappings(Function(m) m.FluentMappings.AddFromAssemblyOf(Of ItemTypeMap)().ExportTo("C:\Temp")). _
            ExposeConfiguration(Function(cfg) New SchemaExport(cfg).Create(True, True)).BuildSessionFactory()
        Return sessionFactory
    End Function
End Class

2 个答案:

答案 0 :(得分:0)

ExposeConfiguration方法定义如下(vb):

Public Function ExposeConfiguration(config As Action(Of Configuration)) As FluentConfiguration

需要Action(Of Configuration)的实例。您必须将Function更改为Sub,如下所示:

ExposeConfiguration(Sub(cfg) New SchemaExport(cfg).Create(True, True)).BuildSessionFactory()

答案 1 :(得分:0)

在这里遇到相同的问题,但是上面的内联代码不起作用-可能是由于NHIbernate更新所致。

错误是:“表达式不产生值”。 我认为NHibernate同时修改了SchemaExport工具吗?

无论如何,这是NHibernate 5.2.0.0的有效代码

对于lambda函数的新功能,请注意换行符

Dim fluentConfig = Fluently.Configure() _
        .Database(SQLiteConfiguration.Standard.UsingFile("hibernatetest.db")) _
        .Mappings(Function(m) m.FluentMappings.AddFromAssembly(Assembly.GetExecutingAssembly())) _
       .ExposeConfiguration(Sub(cfg)
                          Dim se = New SchemaExport(cfg)
                          se.Execute(True, True, False)
                          End Sub) _
       .BuildSessionFactory()

希望有帮助。