我試圖用NHibernate更新我的記錄。直到現在我只創建了SELECT語句。現在我需要做一個更新,我似乎無法使其工作。NHibernate更新不起作用
這是我打來的簡化功能。
public void UpdateDataEditedInDrobneAwarieGrid()
{
using (ISession session = NHibernateHelper.OpenSession())
{
using (ITransaction transaction = session.BeginTransaction())
{
string query = "UPDATE [MESdb].[dbo].[LogIn] SET Uzytkownik='a..' WHERE ID=3";
session.CreateSQLQuery(query);
transaction.Commit();
}
}
}
NHibernateHelper:
public class NHibernateHelper
{
private static ISessionFactory _sessionFactory;
private static ISessionFactory SessionFactory
{
get
{
if (_sessionFactory == null)
{
var NHibernateConfig = new Configuration();
NHibernateConfig.Configure(HttpContext.Current.Server.MapPath(
@"~\Models\NHibernate\hibernate.cfg.xml"), "MESdb");
NHibernateConfig.AddDirectory(new System.IO.DirectoryInfo(HttpContext.Current.Server.MapPath(
@"~\Models\NHibernate\Mapping")));
_sessionFactory = NHibernateConfig.BuildSessionFactory();
}
return _sessionFactory;
}
}
public static ISession OpenSession()
{
return SessionFactory.OpenSession();
}
}
什麼可能是錯的任何想法?
SQL語句正常。在MSSQL服務器中檢查它。
這是專爲批量更新,而不是在持久對象設置屬性。應該檢索並更改持久對象,然後自動更新transaction.Commit() –
@ErikHart此評論不屬於答案。它屬於這個問題。也是不正確的。對於批量更新,Erik,你應該檢查DML。 'CreateSQLQuery'對我們來說就是爲了快速訪問ADO.NET,同時還由NHiberante管理。簡而言之,在某些情況下,您無法使用映射。相信我,你遲早會面對的;) –