何らかの理由で、セッションにアクセスしようとするとNhibernateが孤立してしまいます。FluentNHibernateとセッションを認識しない
CurrentSessionContextは設定されていません(current_session_context_classプロパティを設定してください)。
私は構成をセットアップするためにXMLを使用していません。
私は私のテストでセッションを開いています:
[SetUp]
public void Initialize()
{
_session = GetSessionFactory().OpenSession();
_transaction = _session.BeginTransaction();
SetupContext();
When();
}
そして私は、現在のセッションにアクセスするためのリポジトリを使用しています。リポジトリは別のDLLにあります。
public void Save(Category newCategory)
{
var session = SessionFactory.GetSession();
session.SaveOrUpdate(newCategory);
}
public static ISession GetSession()
{
var session = _sessionFactory.GetCurrentSession();
if (session == null)
return _sessionFactory.OpenSession();
return session;
}
UPDATE:私BaseTest.csクラスで
Iはまた、ティアダウンを持っている:
[TEARDOWN] 公共ボイドクリーンアップ(){ _session.Dispose()。 _transaction.Dispose(); }
デバッグ中にCleanUpが起動され、_sessionオブジェクトが強制終了されたようです。
別のアップデート:私は、コンフィギュレーションを構築し、次のコードを追加しました:
public static ISessionFactory CreateSessionFactory()
{
_sessionFactory =
Fluently.Configure().Database(
MsSqlConfiguration.MsSql2000.ConnectionString(
c => c.FromConnectionStringWithKey("ConnectionString")))
.Mappings(m =>
m.FluentMappings.AddFromAssemblyOf<Category>())
**.ExposeConfiguration(x =>
{
x.SetProperty("current_session_context_class",
"thread_static");
})**
.BuildSessionFactory();
return _sessionFactory;
}
今、私は次のエラーを取得:
これは解決したのですか? – DevelopingChris