小弟刚学用NHibernate,第一个程序就出现了“NHibernate.Proxy.CastleProxyFactory”的类型初始值设定项引发异常这是Person.cs文件
using System;
using System.Collections;namespace Test.Model
{
#region Person /// <summary>
/// Person object for NHibernate mapped table 'Person'.
/// </summary>
public class Person
{
#region Member Variables

protected int _id;
protected string _name; #endregion #region Constructors public Person() { } #endregion #region Public Properties public virtual  int Id
{
get {return _id;}
set {_id = value;}
} public virtual  string Name
{
get { return _name; }
set
{
if ( value != null && value.Length > 50)
throw new ArgumentOutOfRangeException("Invalid value for Name", value, value.ToString());
_name = value;
}
} #endregion
}
#endregion
}这是主程序:
using System;
using System.Collections.Generic;
using System.Text;
using NHibernate;
using NHibernate.Cfg;
using Test.Model;namespace Console1
{
    class Program
    {
        static void Main(string[] args)
        {
            
            Configuration config = new Configuration().AddAssembly("Test.Model");
            ISessionFactory factory = config.BuildSessionFactory();
            ISession session = factory.OpenSession();            Person person = new Person();
            person.Name = "Jackie Chan";            ITransaction trans = session.BeginTransaction();
            try
            {
                session.Save(person);
                trans.Commit();
                Console.WriteLine("Insert Success!");
            }
            catch (Exception ex)
            {
                trans.Rollback();
                Console.WriteLine(ex.Message);
            }
        }
    }
}

解决方案 »

  1.   

    详细的异常信息:
       未处理 System.TypeInitializationException
      Message="“NHibernate.Proxy.CastleProxyFactory”的类型初始值设定项引发异常。"
      Source="NHibernate"
      TypeName="NHibernate.Proxy.CastleProxyFactory"
      StackTrace:
           在 NHibernate.Proxy.CastleProxyFactory..ctor()
           在 NHibernate.Persister.Entity.AbstractEntityPersister.CreateProxyFactory()
           在 NHibernate.Persister.Entity.AbstractEntityPersister..ctor(PersistentClass persistentClass, ICacheConcurrencyStrategy cache, ISessionFactoryImplementor factory)
           在 NHibernate.Persister.Entity.SingleTableEntityPersister..ctor(PersistentClass model, ICacheConcurrencyStrategy cache, ISessionFactoryImplementor factory, IMapping mapping)
           在 NHibernate.Persister.PersisterFactory.CreateClassPersister(PersistentClass model, ICacheConcurrencyStrategy cache, ISessionFactoryImplementor factory, IMapping cfg)
           在 NHibernate.Impl.SessionFactoryImpl..ctor(Configuration cfg, IMapping mapping, Settings settings)
           在 NHibernate.Cfg.Configuration.BuildSessionFactory()
           在 Console1.Program.Main(String[] args) 位置 F:\Console1\Console1\Program.cs:行号 16
           在 System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args)
           在 System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
           在 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
           在 System.Threading.ThreadHelper.ThreadStart_Context(Object state)
           在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
           在 System.Threading.ThreadHelper.ThreadStart()
      

  2.   

    检查一下配置文件,包括*.hbm.xml文件和数据库配置文件,然后根据堆栈信息检查一下为什么抛异常,处理一下就ok 了