0

ASP.NET MVC3 プロジェクトで Fluent NHibernate を使用しています。私はカスタム メンバーシップ プロバイダーをコーディングしており、FNHRoleProvider クラスをセットアップしています。その一部には、次の try catch ブロックが含まれています。

private Entities.Roles GetRole(string rolename)
{
    Entities.Roles role = null;
    using (ISession session = SessionFactory.OpenSession())
    {
        using (ITransaction transaction = session.BeginTransaction())
        {
            try
            {
                role = session.CreateCriteria(typeof(Entities.Roles))
                    .Add(NHibernate.Criterion.Restrictions.Eq("RoleName", rolename))
                    .Add(NHibernate.Criterion.Restrictions.Eq("ApplicationName", this.ApplicationName))
                    .UniqueResult<Entities.Roles>();

                //just to lazy init the collection, otherwise get the error 
                //NHibernate.LazyInitializationException: failed to lazily initialize a collection, no session or session was closed
                IList<Entities.Users> us =  role.UsersInRole; 
            }
            catch (Exception e)
            {
                if (WriteExceptionsToEventLog)
                    WriteToEventLog(e, "GetRole");
                else
                    throw e;
            }
        }
    }
    return role;
}

using ステートメントに NHibernate.Criterion を追加したにもかかわらず、Criterion が現在の名前空間に存在しないというエラーが表示されます。名前空間のこの部分をオブジェクト ブラウザーで表示することもできます。

ビルド エラーを解決するにはどうすればよいですか?

4

1 に答える 1

1

名前空間にNHibernateという名前を付けたので、NHibernate.Criterion.前に削除したほうがいいと思いますRestrictions

于 2012-08-14T08:38:01.360 に答える