This repository was 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 Dec 17, 2018
·
11 revisions
Provides:
-
FluentConfigurationclass extensions which allows you to easy configure your data-base connection - NHibernate
ISessionextensions which allows you to write queries with lambda expressions SchemaExporter
Available at NuGet as binary package
namespace MyApp.Database
{
public class MyDbFactoryManager
{
private readonly ISessionFactory _instance;
public ISessionFactory Instance
{
get { return _instance; }
}
public MyDbFactoryManager(string configSectionName = "MyDatabaseConnectionSettings")
{
var configuration = Fluently.Configure();
configuration.InitializeFromConfigMsSql(configSectionName);
configuration.AddMappingsFromAssemblyOf<UserMap>();
_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>A port number can be specified via Port parameter:
<add key="Port" value="1234" />Configuration with the Microsoft.Extensions.Configuration IConfiguration implementation with ability to specify settings section name
namespace MyApp.Database
{
public class MyDbFactoryManager
{
private readonly ISessionFactory _instance;
public ISessionFactory Instance
{
get { return _instance; }
}
public MyDbFactoryManager(IConfiguration cfg, string configSectionName = "MyDatabaseConnectionSettings")
{
var configuration = Fluently.Configure();
configuration.InitializeFromConfigMsSql(cfg, configSectionName);
configuration.AddMappingsFromAssemblyOf<UserMap>();
_instance = configuration.BuildSessionFactory();
}
}
}IConfiguration settings based on appsettings.json example:
{
"MyDatabaseConnectionSettings":
{
"ServerName": "Server name",
"DataBaseName": "data-base name",
"UserName": "user name",
"UserPassword": "password",
}
}configuration.InitializeFromConfigMsSql(configSectionName, c => c.Dialect<MsSql2012Dialect>());var user = session.GetObject(x => x.Name == "FooName");
var users = session.GetList(x => x.Name.StartWith("A"));More examples here
Executed SQL queries can be displayed in console/(VS output window) by setting ShowSql option in settings:
<?xml version="1.0" encoding="utf-8"?>
<MyDatabaseConnectionSettings>
...
<!-- Default value is: false -->
<add key="ShowSql" value="true" />
...
</MyDatabaseConnectionSettings>
</configuration>