NHibernate+SQLite 学习笔记(二)+使用FLuent NHibernate 建立会话工厂(session factory) 并对数据库进行操作(open Session)

 

1、创建一个会话工厂(session factory)

#region //********************创建一个会话工厂---Create Session Factory*******************//
private void btnCreateSessionFactory_Click(object sender,RoutedEventArgs e)
{
var factory = CreateSessionFactory();
}
private ISessionFactory CreateSessionFactory()
{
//*********************SQL Server************************//
//return Fluently.Configure()
//.Database(MsSqlConfiguration
//.MsSql2012
//.ConnectionString(connString))
//.Mappings(m => m.FluentMappings
//.AddFromAssemblyOf<ProductMap>())
//.BuildSessionFactory();
//*********************SQLite************************//
return Fluently.Configure().Database(SQLiteConfiguration.Standard.UsingFile(datasource))
.Mappings(m => m.FluentMappings
.AddFromAssemblyOf<ProductMap>())
//.ExposeConfiguration(CreateSchema)     ////因为CreateSchema是重新映射了一次数据库,存在这句的时候当对表进行添加数据时永远只有一个值,其他的都会消失,而不存在这句时候则会新增加数据。
.BuildSessionFactory();
}
#endregion

 

2、打开会话对数据库进行操作(open Session、seesion.Save、session.Query操作)

#region //*************************打开会话,对数据库进行操作*********************//
//******************************打开一个会话,不操作****************************//
private void btnCreateSession_Click(object sender,RoutedEventArgs e)
{
var factory = CreateSessionFactory();
using (var session = factory.OpenSession())
{
// do something with the session
}
}

//******************************打开一个会话对数据库进行增操作****************************//
private void btnAddCategory_Click(object sender,RoutedEventArgs e)
{
var factory = CreateSessionFactory();
using (var session = factory.OpenSession())
{
var category = new Category
{
Name = txtCategoryName.Text,
Description = txtCategoryDescription.Text
};
session.Save(category);
}
}

//**************************打开会话对数据库进行查操作************************************//
private void btnLoadCategories_Click(object sender, RoutedEventArgs e)
{
var factory = CreateSessionFactory();
using (var session = factory.OpenSession())
{
var categories = session.Query<Category>()
.OrderBy(c => c.Name).ToList();
lstCategories.ItemsSource = categories;
lstCategories.DisplayMemberPath = "Name";
}
}
#endregion

3、小结

通过简单的实例操作,学习了NHibernate 对SQLite操作的简单流程,具体如下:

1、定义一个模型(Model)

2、定义数据库的工作方式(DataBase Schema)

3、映射模型到数据库中(Mapping the Model to the DataBase)(这是否就是ORM的精髓呢?望大神给我解答下)

4、会话的使用和事务的启用(Sessions and Transactions)

5、测试(Test)

如果有理解的不对,请大神指点。

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。