一、安装
<ItemGroup>
<PackageReference Include="FluentNHibernate" Version="3.1.0" />
<PackageReference Include="NHibernate.Driver.MySqlConnector" Version="2.0.3" />
</ItemGroup>
二、新建实体及映射
Store.cs
namespace FluentNHibernateDemo.Entities
{
public class Store
{
public virtual int Id { get; protected set; }
public virtual string Name { get; set; }
}
}
StoreMap.cs
using FluentNHibernate.Mapping;
using FluentNHibernateDemo.Entities;
namespace Examples.FirstProject.Mappings
{
public class StoreMap : ClassMap<Store>
{
public StoreMap()
{
Id(x => x.Id);
Map(x => x.Name);
Table("stores");
}
}
}
三、操作数据WeatherForecastController.cs
using FluentNHibernate.Cfg.Db;
using FluentNHibernate.Cfg;
using FluentNHibernateDemo.Entities;
using Microsoft.AspNetCore.Mvc;
using NHibernate;
using NHibernate.Tool.hbm2ddl;
using NHibernate.Cfg;
namespace FluentNHibernateDemo.Controllers
{
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
private readonly ILogger<WeatherForecastController> _logger;
public WeatherForecastController(ILogger<WeatherForecastController> logger)
{
_logger = logger;
}
[HttpGet(Name = "GetWeatherForecast")]
public IActionResult Get()
{
var sessionFactory = CreateSessionFactory();
using (var session = sessionFactory.OpenSession())
{
using (var transaction = session.BeginTransaction())
{
var store = new Store { Name = "Bargin Basin"+DateTime.Now };
session.Save(store);
transaction.Commit();
}
}
return Ok(true);
}
private static ISessionFactory CreateSessionFactory()
{
return Fluently.Configure(new NHibernate.Cfg.Configuration().DataBaseIntegration(c => c.MySqlConnectorDriver()))
.Database(MySQLConfiguration.Standard.ConnectionString("Server=192.168.31.132;User ID=root;Password=123456;Database=sugar;port=3306"))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<Program>())
.ExposeConfiguration(BuildSchema)
.BuildSessionFactory();
}
private static void BuildSchema(NHibernate.Cfg.Configuration config)
{
new SchemaExport(config)
.Create(script =>
{
Console.WriteLine(script);
}, false);
}
}
}