有办法使用NHibernate返回插入记录的主键。在NHibernate中,可以使用ISession.Save()
方法来保存对象,并返回生成的主键。以下是一个简单的示例:
using NHibernate;
using NHibernate.Cfg;
using NHibernate.Dialect;
using NHibernate.Driver;
using NHibernate.Mapping.ByCode;
using NHibernate.Tool.hbm2ddl;
using System;
namespace NHibernateExample
{
public class Program
{
public static void Main(string[] args)
{
var configuration = new Configuration();
configuration.DataBaseIntegration(db =>
{
db.ConnectionString = "Server=localhost;Database=test;User Id=root;Password=password;";
db.Driver<MySqlDataDriver>();
db.Dialect<MySQL5Dialect>();
});
var mapper = new ModelMapper();
mapper.AddMapping<UserMap>();
var mapping = mapper.CompileMappingForAllExplicitlyAddedEntities();
configuration.AddMapping(mapping);
var sessionFactory = configuration.BuildSessionFactory();
var session = sessionFactory.OpenSession();
var user = new User
{
Name = "John Doe",
Email = "john.doe@example.com"
};
using (var transaction = session.BeginTransaction())
{
var id = session.Save(user);
transaction.Commit();
Console.WriteLine($"Inserted record with ID: {id}");
}
}
}
}
在这个示例中,我们创建了一个User
对象,并使用ISession.Save()
方法将其保存到数据库中。Save()
方法返回生成的主键,我们可以将其打印到控制台上。
需要注意的是,Save()
方法只适用于具有自动生成主键的实体。如果实体的主键是手动分配的,那么需要使用ISession.Get()
方法来获取实体的主键。
领取专属 10元无门槛券
手把手带您无忧上云