码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2014-12-26 16:37:30      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:

 

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)

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

 

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

标签:

原文地址:http://www.cnblogs.com/20141209cy/p/4186969.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!