你的位置:首页 > ASP.net教程

[ASP.net教程]Fluent NHibernate and Mysql,SQLite


http://codeofrob.com/entries/sqlite-csharp-and-nhibernate.html

https://code.google.com/archive/p/csharp-sqlite/downloads

https://github.com/davybrion/NHibernateWorkshop

MySQL

 /// <summary>     ///MySQL 创建ISessionFactory     /// </summary>     /// <returns></returns>     public static ISessionFactory GetSessionFactory()     {       if (_sessionFactory == null)       {         lock (_objLock)         {           if (_sessionFactory == null)           {             //配置ISessionFactory             _sessionFactory = FluentNHibernate.Cfg.Fluently.Configure()               //数据库配置            .Database(FluentNHibernate.Cfg.Db.MySQLConfiguration.Standard              .ConnectionString(c=>c.Server("")              .Database("geovindu")              .Password("520")              .Username("root"))              )                          .Mappings(m => m             //.FluentMappings.PersistenceModel             //.FluentMappings.AddFromAssembly();                        .FluentMappings.AddFromAssembly(Assembly.GetExecutingAssembly())) //用法注意                 .BuildSessionFactory();                      //  Fluently.Configure().Database(          //  MySqlConfiguration.Standard.ConnectionString(          //    c => c.FromConnectionStringWithKey("ConnectionString")          //  )          //)          //.Mappings(m => m.FluentMappings.AddFromAssemblyOf<MyAutofacModule>())          //.BuildSessionFactory())           }         }       }       return _sessionFactory;     }     /// <summary>     /// 重置Session     /// </summary>     /// <returns></returns>     public static ISession ResetSession()     {       if (_session.IsOpen)         _session.Close();       _session = _sessionFactory.OpenSession();       return _session;     }     /// <summary>     /// 打开ISession     /// </summary>     /// <returns></returns>     public static ISession GetSession()     {       GetSessionFactory();       if (_session == null)       {         lock (_objLock)         {           if (_session == null)           {             _session = _sessionFactory.OpenSession();           }         }       }       return _session;     }

  SQLite (测试ISessionFactory还存在问题)

 /// <summary>  /// http://frankdecaire.blogspot.com/2014/04/fluent-nhibernate-unit-testing-using.html  /// </summary>  public static class SQLLiteSessionFactory  {    private static ISessionFactory _sessionFactory;    private static ISessionFactory SessionFactory    {      get      {        if (_sessionFactory == null)        {          _sessionFactory = Fluently.Configure()          .Database(SQLiteConfiguration              .Standard              .InMemory()              .UsingFile("sibodu.db")          )          .Mappings(m => m.FluentMappings.AddFromAssemblyOf<NHibernateTestProject.Entites.Department>())          .Mappings(m => m.FluentMappings.AddFromAssemblyOf<NHibernateTestProject.Entites.Employee>())          .ExposeConfiguration(cfg => new SchemaExport(cfg).Create(true, true))          .BuildSessionFactory();        }        return _sessionFactory;      }    }    public static ISession OpenSession()    {      return SessionFactory.OpenSession();    }  }

  

/// http://www.cnblogs.com/vingi/articles/4302497.html
/// http://codeofrob.com/entries/sqlite-csharp-and-nhibernate.html
/// http://frankdecaire.blogspot.com/2014/04/fluent-nhibernate-unit-testing-using.html

 /// <summary>  /// Nhibernate  /// </summary>  public class MonoSQLiteDriver : NHibernate.Driver.ReflectionBasedDriver  {    public MonoSQLiteDriver()      : base(      "Mono.Data.Sqlite",      "Mono.Data.Sqlite",      "Mono.Data.Sqlite.SqliteConnection",      "Mono.Data.Sqlite.SqliteCommand")    {    }    public override bool UseNamedPrefixInParameter    {      get      {        return true;      }    }    public override bool UseNamedPrefixInSql    {      get      {        return true;      }    }    public override string NamedPrefix    {      get      {        return "@";      }    }    public override bool SupportsMultipleOpenReaders    {      get      {        return false;      }    }  } /// <summary>  /// Fluent NHibernate  ///  /// </summary>  public class MonoSQLiteConfiguration : PersistenceConfiguration<MonoSQLiteConfiguration>  {    public static MonoSQLiteConfiguration Standard    {      get { return new MonoSQLiteConfiguration(); }    }    /// <summary>    ///     /// </summary>    public MonoSQLiteConfiguration()    {      Driver<MonoSQLiteDriver>();      Dialect<SQLiteDialect>();      Raw("query.substitutions", "true=1;false=0");    }    /// <summary>    ///     /// </summary>    /// <returns></returns>    public MonoSQLiteConfiguration InMemory()    {      Raw("connection.release_mode", "on_close");      return ConnectionString(c => c        .Is("Data Source=:memory:;Version=3;"));//New=True;    }    /// <summary>    ///     /// </summary>    /// <param name="fileName"></param>    /// <returns></returns>    public MonoSQLiteConfiguration UsingFile(string fileName)    {      return ConnectionString(c => c        .Is(string.Format("Data Source={0};Version=3;Pooling=true;FailIfMissing=false;UTF8Encoding=True;", fileName)));//New=True;    }    /// <summary>    ///     /// </summary>    /// <param name="fileName"></param>    /// <param name="password"></param>    /// <returns></returns>    public MonoSQLiteConfiguration UsingFileWithPassword(string fileName, string password)    {      return ConnectionString(c => c        .Is(string.Format("Data Source={0};Version=3;New=True;Password={1};", fileName, password)));    }  }