Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NHibernate映射错误与v4.0_C#_Nhibernate_Nhibernate Mapping - Fatal编程技术网

C# NHibernate映射错误与v4.0

C# NHibernate映射错误与v4.0,c#,nhibernate,nhibernate-mapping,C#,Nhibernate,Nhibernate Mapping,我使用的是VS 2013 32位,nHibernate v4.0.0.4000。 我是nHiberNate的新手,在没有使用fluent的情况下,我可以避免创建贴图。我需要很好的工作样品,我目前还没有找到 我得到以下代码的错误 其他信息:无法编译映射文档:C:\Project…\Some\Models\NHibernate\Mappings\SomeInfo.hbm.xml <?xml version="1.0" encoding="utf-8" ?> <hibernate-

我使用的是VS 2013 32位,nHibernate v4.0.0.4000。 我是nHiberNate的新手,在没有使用fluent的情况下,我可以避免创建贴图。我需要很好的工作样品,我目前还没有找到

我得到以下代码的错误

其他信息:无法编译映射文档:C:\Project…\Some\Models\NHibernate\Mappings\SomeInfo.hbm.xml

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping 
xmlns="urn:nhibernate-mapping-2.2" 
assembly="Some" 
namespace="Some.Models" 
auto-import="true"> 
<class name="SomeInfo" table="Some_Table" lazy="false"> 
  <!--<id name="ID" column="Form_Id" Type="Long">
       <generator class="native"></generator> </id>-->
  <id name="ID" column="Form_Id"> 
     <generator class="native"></generator> 
  </id>
  <property name="Form_Id" column="Form_Id"></property> 
  <property name="Account_Id" column="Account_Id"></property> 
  <property name="Entity" column="Entity"></property> 
  <property name="Name" column="Name"></property>   
  <property name="Ownership_Percent" access="property" 
            column="Ownership_Percent" type="Decimal"></property> 
</class> 
</hibernate-mapping> 
InnerException:{“试图通过反射设置属性类型时出现问题”}

代码与映射-----

映射实例创建:

namespace Some.Models
{
    public class Hibernate_Connection
    {
        ISessionFactory sessionFactory;        
        ISession OpenSession()
        {
            if (sessionFactory == null)
            {
                var cgf = new Configuration();
                var data = cgf.Configure(HttpContext.Current.Server.MapPath(@"Models\NHibernate\Configuration\hibernate.cfg.xml"));
                cgf.AddDirectory(new System.IO.DirectoryInfo(HttpContext.Current.Server.MapPath(@"Models\NHibernate\Mappings")));
                sessionFactory = data.BuildSessionFactory();
            }
            return sessionFactory.OpenSession();
        }
映射:Models/NHiberNate/Mappings/SomeInfo.hbm.xml

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping 
xmlns="urn:nhibernate-mapping-2.2" 
assembly="Some" 
namespace="Some.Models" 
auto-import="true"> 
<class name="SomeInfo" table="Some_Table" lazy="false"> 
  <!--<id name="ID" column="Form_Id" Type="Long">
       <generator class="native"></generator> </id>-->
  <id name="ID" column="Form_Id"> 
     <generator class="native"></generator> 
  </id>
  <property name="Form_Id" column="Form_Id"></property> 
  <property name="Account_Id" column="Account_Id"></property> 
  <property name="Entity" column="Entity"></property> 
  <property name="Name" column="Name"></property>   
  <property name="Ownership_Percent" access="property" 
            column="Ownership_Percent" type="Decimal"></property> 
</class> 
</hibernate-mapping> 

您的模型属性需要是虚拟的:

    public class SomeInfo 
    {
        public virtual long     Form_Id { get; set; }   
        public virtual string   Account_Id { get; set; } 
        public virtual char     Entity { get; set; }
        public virtual string   Name { get; set; }
        public virtual decimal  Ownership_Percent { get; set; } 
    }

我想,如果您提供完整的异常,我们将看到(在堆栈跟踪中)这样的消息:

。。。在类“Some.Models.SomeInfo”中找不到属性“ID”的getter

因为映射指示NHibernate映射C#属性
ID

<id name="ID" column="Form_Id"> 
  <generator class="native"></generator> 
</id>
<property name="Form_Id" column="Form_Id"></property> 
而事实并非如此。我们应该将one列映射到one属性。所以,这个映射应该是有效的

<class name="SomeInfo" table="Some_Table" lazy="false"> 
  <id name="Form_Id" column="Form_Id"> 
     <generator class="native"></generator> 
  </id>
  <property name="Account_Id" column="Account_Id"></property> 
  ...
</class> 

...