我有点迷失在这里。
我搜索了一些信息,显然有几个SQLite GUI工具来创建SQLite DB文件。同时我也注意到NHibernate带有SQLite的内存配置return Fluently.Configure().Mappings(m => m.FluentMappings.AddFromAssemblyOf<MyEntityMap>()).Database(SQLiteConfiguration.Standard.InMemory().ShowSql()).BuildSessionFactory();
使用这样的设置,没有使用DB文件的选项。那么在我使用NHibernate执行所有CRUD操作之前,如何创建所有表结构并将记录插入内存数据库呢?
由于
编辑1 - 包含映射类和会话类 我的实体基类
Public MustInherit Class SingleKeyEntity(Of TId)
Public Overridable Property Id() As TId
Get
Return m_Id
End Get
Set(value As TId)
m_Id = value
End Set
End Property
End Class
我的实体类
Public Class Subscription
Inherits SingleKeyEntity(Of System.Nullable(Of Integer))
Private m_Subscriber As String
Public Overridable Property Subscriber() As String
Get
Return m_Subscriber
End Get
Set(value As String)
m_Subscriber = value
End Set
End Property
Private m_Format As String
Public Overridable Property Format() As String
Get
Return m_Format
End Get
Set(value As String)
m_Format = value
End Set
End Property
结束班
我的映射类
Public Class SubscriptionMap
Inherits ClassMap(Of Subscription)
Public Sub New()
Table("SUBSCRIPTIONS")
Id(Function(x) x.Id, "ID").GeneratedBy.Identity()
Map(Function(x) x.Subscriber, "SUBSCRIBER").[Not].Nullable()
Map(Function(x) x.Format, "DISTRIBUTION_FORMAT").[Not].Nullable()
' more properties omitted
End Sub
End Class
我的会话配置
Return Fluently.Configure() _
.Mappings(Function(m) m.FluentMappings.AddFromAssemblyOf(Of SubscriptionMap)()) _
.Database(SQLiteConfiguration.Standard.InMemory().ShowSql()) _
.ExposeConfiguration(Sub(x As NHibernate.Cfg.Configuration)
Dim export As SchemaExport = New SchemaExport(x)
'export.Execute(False, True, False)
export.Create(False, True)
End Sub) _
.BuildSessionFactory()
答案 0 :(得分:3)
如果您正在使用InMemoryDB,则不会创建任何phsyical文件,并且当处理SessionFactory时,InMemoryDB将会丢失。
这使得InMemoryDB非常适合单元测试,因为它不需要一直设置/拆卸。
我希望你的目的是为了测试而不是真正的应用程序:)
要创建所有表,您需要像这样导出配置:
return Fluently.Configure()
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<MyEntityMap>())
.Database(SQLiteConfiguration.Standard.InMemory().ShowSql()).BuildSessionFactory()
.ExposeConfiguration(x =>
{
new SchemaExport(x).Execute(false, true);
});
答案 1 :(得分:1)
我猜你真的想要一个内存数据库专门用于测试pourpose。如果是这样,您可以在测试初始化中使用NHibernate为您创建架构:
SchemaExport se = new SchemaExport(cfg);
se.Create(true, true);
然后你可以开始添加和玩实体。