更新された値を読み込まずに高速更新クエリを実行しようとしていますこのコードを使用しようとしました
public void Save(int PlayerID, string Column, object Value)
{
using (ISession session = new SessionManager(_connectionString).Open())
{
IQuery query = session.CreateQuery("UPDATE Players SET " + Column + "= :newValue WHERE PlayerID=:PlayerID");
query.SetParameter("newValue", Column);
query.SetParameter("PlayerID", PlayerID);
query.ExecuteUpdate();
}
}
しかし、実際にマップされているのにPlayerがマップされておらず、別のステートメントですでに使用しているというエラーが表示されます。
あなたのエンティティ名はPlayer
プレイヤーのものではないと思いますか?
IQuery query = session.CreateQuery("UPDATE Player SET " + Column + "= :newValue WHERE PlayerID=:PlayerID");
query.SetParameter("newValue", Column);
query.SetParameter("PlayerID", PlayerID);
query.ExecuteUpdate();
hqlでテーブルの名前を指定する必要はなく、エンティティの名前だけを指定する必要があります。
それとは別に、プロキシを操作することができます。単にsession.Load(...)
、指定されたIDのプロキシオブジェクトをロードするために使用します。これはデータベースに影響を与えません。ただしsession.Delete
、オブジェクトへのプロキシを使用できます。
詳細については、こちらをご覧ください:http://nhibernate.info/blog/2009/04/29/nhibernate-the-difference-between-get-load-and-querying-by-id.html
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加