以下代码无法编译。使用新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
答案 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()
希望有帮助。