This repository has been archived by the owner on Jun 30, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 10
Simplify.FluentNHibernate
Alexanderius edited this page Jul 2, 2019
·
11 revisions
Provides:
-
FluentConfiguration
class extensions which allows you to easily configure your data-base connection. - NHibernate
ISession
extensions which allows you to write queries with lambda expressions. SchemaExporter
Available at NuGet as binary package
namespace MyApp.Database
{
public class MyDbSessionFactoryBuilder
{
private readonly ISessionFactory _instance;
public ISessionFactory Instance
{
get { return _instance; }
}
public MyDbSessionFactoryBuilder(IConfiguration cfg, string configSectionName = "MyDatabaseConnectionSettings")
{
var configuration = Fluently.Configure();
configuration.InitializeFromConfigMsSql(cfg, configSectionName);
configuration.AddMappingsFromAssemblyOf<MyDbSessionFactoryBuilder>();
_instance = configuration.BuildSessionFactory();
}
}
}
{
"MyDatabaseConnectionSettings":
{
"ServerName": "Server name",
"DataBaseName": "data-base name",
"UserName": "user name",
"UserPassword": "password",
}
}
namespace MyApp.Database
{
public class MyDbSessionFactoryBuilder
{
private readonly ISessionFactory _instance;
public ISessionFactory Instance
{
get { return _instance; }
}
public MyDbSessionFactoryBuilder(string configSectionName = "MyDatabaseConnectionSettings")
{
var configuration = Fluently.Configure();
configuration.InitializeFromConfigMsSql(configSectionName);
configuration.AddMappingsFromAssemblyOf<MyDbSessionFactoryBuilder>();
_instance = configuration.BuildSessionFactory();
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="MyDatabaseConnectionSettings" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</configSections>
<MyDatabaseConnectionSettings>
<add key="ServerName" value="Server name" />
<add key="DataBaseName" value="data-base name" />
<add key="UserName" value="user name" />
<add key="UserPassword" value="password" />
</MyDatabaseConnectionSettings>
</configuration>
Database type | Method | Comment |
---|---|---|
Microsoft SQL Server | InitializeFromConfigMsSql | Connection using System.Data managed driver |
MySQL | InitializeFromConfigMySql | Connection using MySql.Data managed driver |
PostgreSQL | InitializeFromConfigPostgreSql | Connection using Npgsql managed driver |
Oracle | InitializeFromConfigOracleOdpNet | Connection using Oracle.ManagedDataAccess managed driver (recommended for Oracle) |
Oracle | InitializeFromConfigOracleOdpNetNative | Connection using odp.net.x86 or odp.net.x64 unmanaged drivers |
Oracle | InitializeFromConfigOracleClient | Connection using Oracle.DataAccess.x86 or Oracle.DataAccess.x64 unmanaged drivers |
SQLite | InitializeFromConfigSqLite | Connection using System.Data.SQLite managed driver |
SQLite | InitializeFromConfigSqLiteInMemory | Connection using System.Data.SQLite managed driver using in-memory database |
Option Name | Type | Description |
---|---|---|
Port | int | Database port number |
ShowSql | bool | Executed SQL queries can be displayed in console/(VS output window) by setting ShowSql option, default values is false
|
Can be specified via lambda extension, for example, a custom dialect
configuration.InitializeFromConfigMsSql(configSectionName, c => c.Dialect<MsSql2012Dialect>());
var user = session.GetObject(x => x.Name == "FooName");
var users = session.GetList(x => x.Name.StartWith("A"));