我是新的NHibernate查询。我有一对多关系的oracle表,如下所述。我已经完成了流畅的nhibernate映射并尝试运行以下查询,但我一直收到错误,说ChInfo_Id无效。任何人都可以帮助我在这里做错了什么。
var query = Session.QueryOver(() => logAlias)
.Inner.JoinQueryOver(()=>logAlias.ChInfo, ()=>chInfoAlias)
.Where(()=>logAlias.RegDate.IsBetween(fromDate).And(toDate))
.Future<Log>();
return query.ToList();
表:
Ch_Info
Ch_no
Name
日志
portid
regdate
ch_no
Class和FluentNHibernate映射:
public class Log
{
public virtual int PortId { get; set; }
public virtual DateTime Regdate { get; set; }
public virtual ChInfo ChInfo { get; set; }
}
public class ChInfo
{
public ChInfo()
{
Logs = new List<Log>();
}
public virtual string Id { get; set; }
public virtual string Name { get; set; }
public virtual IList<Log> Logs { get; set; }
}
public class LogMap : ClassMap<Log>
{
public LogMap()
{
Table("LOG");
CompositeId()
.KeyProperty(x => x.PortId,"portid")
.KeyProperty(x => x.Regdate, "regdate");
References(x => x.ChInfo);
}
}
public class ChInfoMap : ClassMap<ChInfo>
{
public ChInfoMap()
{
Table("Ch_Info");
Id(x => x.Id).GeneratedBy.Assigned().Column("Ch_no");
Map(x => x.Name).Column("Name");
HasMany(x => x.Logs)
.Inverse()
.Cascade.All();
}
}
答案 0 :(得分:0)
我通过在LogMap中的引用中指定列名来解决它。
public class LogMap : ClassMap<Log>
{
public LogMap()
{
Table("LOG");
CompositeId()
.KeyProperty(x => x.PortId,"portid")
.KeyProperty(x => x.Regdate, "regdate");
References(x => x.ChInfo).Columne("Ch_no");
}
}