2

私はC#と.netのすべてが初めてです。テスト コンソール アプリを使用して Nhibernate 構成をテストしようとしています。

ここに私のテストコンソールアプリがあります

class Program
{
    static void Main(string[] args)
    {
        try
        {
            NHibernateBase NHB = new NHibernateBase();
            NHB.Initialize("NHibernate.GuitarStore");
            System.Console.WriteLine("NHibernate.GuitarStore assembly initialized.");
            System.Console.ReadLine();
        }
        catch (Exception ex)
        {
            string Message = ex.Message;
            if (ex.InnerException != null)
            {
                Message += " - InnerExcepetion: " + ex.InnerException.Message;
             }
        System.Console.WriteLine();
        System.Console.WriteLine("***** ERROR *****");
        System.Console.WriteLine(Message);
        System.Console.WriteLine();
        System.Console.ReadLine();
        }

        }
    }

上記のプログラムを実行すると、次のエラーが表示されます。

***** ERROR *****
Login failed for user 'BUGZILLA\Silon'.

app.config の接続文字列は次のとおりです。

connectionString="Data Source=localhost;Initial Catalog=myGuitarStore;Integrated Security=True

接続文字列の統合セキュリティ部分に関係していると思います。

問題は、接続文字列の属性 (およびその意味) を理解していないことです。また、それらを簡単に説明する記事が見つからないようです。

----問題を理解するために必要な場合に備えて、NHibernateBase クラスを次に示します。

 public class NHibernateBase
{
    private static Configuration Configuration { get; set; }
    protected static ISessionFactory SessionFactory { get; set; }
    private static ISession session = null;
    private static IStatelessSession statelessSession = null;

    public static Configuration ConfigureNHibernate(string assembly)
    {
        Configuration = new Configuration();
        Configuration.AddAssembly(assembly);
        return Configuration;
    }

    public void Initialize(string assembly)
    {
        Configuration = ConfigureNHibernate(assembly);
        SessionFactory = Configuration.BuildSessionFactory();
    }

    public static ISession Session
    {
        get
        {
            if (session == null)
            {
                session = SessionFactory.OpenSession();
            }
            return session;
        }
    }

    public static IStatelessSession StatelessSession
    {
        get
        {
            if (statelessSession == null)
            {
                statelessSession = SessionFactory.OpenStatelessSession();
            }
            return statelessSession;
        }
    }

    public IList<T> ExecuteICriteria<T>()
    {
        using (ITransaction transaction = Session.BeginTransaction())
        {
            try
            {
                IList<T> result = Session.CreateCriteria(typeof(T)).List<T>();
                transaction.Commit();
                return result;
            }
            catch (Exception ex)
            {
                transaction.Rollback();
                throw ex;
            }
        }
    }
4

3 に答える 3