Sql server 流利的Nhibernate和HasOne()问题

Sql server 流利的Nhibernate和HasOne()问题,sql-server,nhibernate,sql-server-2008,fluent-nhibernate,one-to-one,Sql Server,Nhibernate,Sql Server 2008,Fluent Nhibernate,One To One,你如何与fluent nhibernate建立一对一的关系?我使用的是ms sql server 2008,每次我通过数据库关系图查看器查看数据库表时,应该具有一对一关系的表似乎都没有 Users UserId <pk> Guid Settings UserId <pk> Guid public Settings { public virtual Guid UserId {get; private set;} public virtual Setting U

你如何与fluent nhibernate建立一对一的关系?我使用的是ms sql server 2008,每次我通过数据库关系图查看器查看数据库表时,应该具有一对一关系的表似乎都没有

Users
UserId <pk> Guid


Settings
UserId <pk> Guid


public Settings
{
  public virtual Guid UserId {get; private set;}
 public virtual Setting User { get; set; }

}

public User
{
  public virtual Guid UserId {get; private set;}
 public virtual Setting Setting { get; set; }
}


public class UserMap : ClassMap<User>
 {
      Id(x => x.UserId);
     HasOne(x => x.Setting);
}

public class SettingMap : ClassMap<Setting>
 {
      Id(x => x.UserId);
     HasOne(x => x.User);
}
用户
用户标识Guid
设置
用户标识Guid
公共环境
{
公共虚拟Guid用户标识{get;private set;}
公共虚拟设置用户{get;set;}
}
公共用户
{
公共虚拟Guid用户标识{get;private set;}
公共虚拟设置{get;set;}
}
公共类UserMap:ClassMap
{
Id(x=>x.UserId);
HasOne(x=>x.Setting);
}
公共类设置映射:类映射
{
Id(x=>x.UserId);
HasOne(x=>x.User);
}

所以我尝试了这个方法,但没有成功。

为什么在设置类中有一个类型为Setting的属性?它被称为User,所以我希望它(也是因为您对问题的描述)是一个User类。

我也遇到过类似的问题,无法看到任何关系正在生成。我终于发现这是有效的:

 public class ParentMap : ClassMap<Parent>
{
   public ParentMap()
  {
      Id(x => x.Id);
     HasOne(s => s.Child).Cascade.All();
  }
}

public class ChildMap : ClassMap<Model.Child>
{
   public ChildMap()
  {
    Id(x => x.Id);
    HasOne(s => s.Parent).Constrained().ForeignKey();           
   }
}
公共类父映射:类映射
{
公共ParentMap()
{
Id(x=>x.Id);
HasOne(s=>s.Child).Cascade.All();
}
}
公共类ChildMap:ClassMap
{
公共儿童地图()
{
Id(x=>x.Id);
HasOne(s=>s.Parent).Constrained().ForeignKey();
}
}

有什么不起作用?它有错误吗?您是否从中创建表以查看生成的SQL?您的Id映射等是否有约定?@Phil我希望在ms sql 2008 server图表生成器中看到两个表之间绘制一条线,显示一对一的关系。生成表时,我看不到这种关系。