C# Nhibernate 3中的一对一映射

C# Nhibernate 3中的一对一映射,c#,nhibernate,nhibernate-mapping,one-to-one,C#,Nhibernate,Nhibernate Mapping,One To One,我有以下课程 namespace Extractor.Mapping { public class Application { public virtual Guid Id { get; set; } public virtual string intId { get; set; } virtual SQuery sQuery { get; set; } } } namespace Extractor.Mapping {

我有以下课程

namespace Extractor.Mapping
{
    public class Application
    {
        public virtual Guid Id { get; set; }
        public virtual string intId { get; set; }
        virtual SQuery sQuery { get; set; }
    }
}


namespace Extractor.Mapping
{
    public class SQuery
    {
        public virtual int Id { get;set; } 
        public virtual Guid Application { get;set; } 
        public virtual string Type { get;set; }
    }
}
SQuery和Application之间的关系是SQuery中名为“Application”的FK

这些是de hbm文件

Application.hbm.xml

<hibernate-mapping  xmlns="urn:nhibernate-mapping-2.2"
                    assembly="Extractor"
                    namespace="Extractor.Mapping">

  <class name="Application" >
    <id name="Id" column="Id">
      <generator class="assigned"/>
    </id>
    <property name = "intId" column = "IntId" type = "string"/>
    <one-to-one name="sQuery" property-ref ="Application" class="SicQuery"/>
  </class>
</hibernate-mapping>

<?xml version="1.0" encoding="utf-8" ?>
我试着这样到达那里:

ICriteria crit = session.CreateCriteria(typeof(SQuery));
IList<SQuery> list = crit.List<SQuery>();
ICriteria crit=session.CreateCriteria(typeof(SQuery));
IList list=crit.list();

提前感谢

一对一的要点是引用关系。这种映射不能是关于
值类型的映射

public class Application
{
    public virtual SQuery sQuery { get; set; }
    ...
}
public class SQuery
{
    // wrong, Guid is ValueType, not a reference 
    // public virtual Guid Application { get;set; } 
    // corrrect - one to one == bi-directional 
    public virtual Application Application { get;set; } 
    ...
}
映射应该是这样的

<class name="Application" >
    ...
    // class should be SQuery
    //<one-to-one name="sQuery" property-ref ="Application" class="SicQuery"/>
    <one-to-one name="sQuery" property-ref="Application" class="SQuery"/>

 <class name="SQuery" >
    ...
    <many-to-one name="Application" class="Application" 
                 column="Application" unique="true"/>

...
//课堂应该整洁
//
...
请参阅此处的更多信息:

在这里你可以找到更多关于
public class Application
{
    public virtual SQuery sQuery { get; set; }
    ...
}
public class SQuery
{
    // wrong, Guid is ValueType, not a reference 
    // public virtual Guid Application { get;set; } 
    // corrrect - one to one == bi-directional 
    public virtual Application Application { get;set; } 
    ...
}
<class name="Application" >
    ...
    // class should be SQuery
    //<one-to-one name="sQuery" property-ref ="Application" class="SicQuery"/>
    <one-to-one name="sQuery" property-ref="Application" class="SQuery"/>

 <class name="SQuery" >
    ...
    <many-to-one name="Application" class="Application" 
                 column="Application" unique="true"/>