C# 帮助尝试使用HasOne链接nHibernate中共享公共数据库列的两个表
我在网页上使用nHibernate查看已有数据库中的项目。我把两张桌子连在一起有困难。这两个表共享一个我需要交叉引用的公共列名。当然,为了更好地使用引用ID,我会对表进行稍微不同的设计,但由于这是一个遗留数据库,我真的需要弄清楚如何配置映射以在现有模式下工作 我正在尝试在两个表之间使用HasOne关系,我也可以看到这如何也适用于多个表,但我似乎无法获得任何正确的结果…在用尽我的Google缓存后,我现在希望有人能够快速了解我做错了什么 第一个表名为“Report”,它希望从另一个名为“OperatingSystem”的表加载对象;两者共享公共字段“报告编号” 模型类如下所示:C# 帮助尝试使用HasOne链接nHibernate中共享公共数据库列的两个表,c#,mysql,nhibernate,has-one,C#,Mysql,Nhibernate,Has One,我在网页上使用nHibernate查看已有数据库中的项目。我把两张桌子连在一起有困难。这两个表共享一个我需要交叉引用的公共列名。当然,为了更好地使用引用ID,我会对表进行稍微不同的设计,但由于这是一个遗留数据库,我真的需要弄清楚如何配置映射以在现有模式下工作 我正在尝试在两个表之间使用HasOne关系,我也可以看到这如何也适用于多个表,但我似乎无法获得任何正确的结果…在用尽我的Google缓存后,我现在希望有人能够快速了解我做错了什么 第一个表名为“Report”,它希望从另一个名为“Opera
public class ReportModel
{
public virtual int Report_Number { get; set; }
public virtual OperatingSystemsModel OperatingSystem { get; set; }
}
public class OperatingSystemsModel
{
public virtual string OS_Name { get; set; }
public virtual int Report_Number { get; set; }
}
public ReportMap()
{
Table("pcd_PROBLEM40");
Id(x => x.Report_Number).Column("Report_Number").GeneratedBy.Native();
HasOne(x => x.OperatingSystem).PropertyRef(x => x.Report_Number).ForeignKey("Report_Number");
}
public OperatingSystemsMap()
{
Table("pcd_os_names");
Id(x => x.Report_Number).Column("Report_Number").GeneratedBy.Native();
Map(x => x.OS_Name);
}
*与正常情况的重要区别在于,这两个记录是通过Report_编号索引的,而不是通过操作系统中的索引索引的报表
表映射如下所示:
public class ReportModel
{
public virtual int Report_Number { get; set; }
public virtual OperatingSystemsModel OperatingSystem { get; set; }
}
public class OperatingSystemsModel
{
public virtual string OS_Name { get; set; }
public virtual int Report_Number { get; set; }
}
public ReportMap()
{
Table("pcd_PROBLEM40");
Id(x => x.Report_Number).Column("Report_Number").GeneratedBy.Native();
HasOne(x => x.OperatingSystem).PropertyRef(x => x.Report_Number).ForeignKey("Report_Number");
}
public OperatingSystemsMap()
{
Table("pcd_os_names");
Id(x => x.Report_Number).Column("Report_Number").GeneratedBy.Native();
Map(x => x.OS_Name);
}
目标是报告模型的OperatingSystem对象将从共享报告编号字段中正确填充
我尝试了HasOne与PropertyRef和ForeignKey的多种组合,但似乎都没有找到一种有效的组合。
当我尝试获取报告时,我不断收到以下异常
{“字段列表”中的未知列“operatings2.Report\u Number”}
public static ReportModel GetReport(int i_iReportNumber)
{
ICriteria criteria = Session.CreateCriteria(typeof(ReportModel));
criteria.Add(Restrictions.Eq("Report_Number", i_iReportNumber));
return criteria.UniqueResult<ReportModel>();
}
任何见解都将不胜感激 试试看:
HasOnex=>x.操作系统
或
HasOnex=>x.OperatingSystem.Constrained
另请参阅,以获取有关HasOne语法的更多帮助: