C# Fluent Nhibernate,复合键,无法解析属性:错误消息
我有一个简单的对象,有三个属性。这链接到一个有三列的表,其中两列是主键(一列是int,另一列是datetime) 每当我尝试查询nhibernate时,都会收到以下错误消息: 无法解析属性:invdate of:Models.Invoice 我在设置映射时是否遗漏了一些简单的内容,或者我的查询是否有误 目标代码:C# Fluent Nhibernate,复合键,无法解析属性:错误消息,c#,database,nhibernate,fluent-nhibernate,data-access,C#,Database,Nhibernate,Fluent Nhibernate,Data Access,我有一个简单的对象,有三个属性。这链接到一个有三列的表,其中两列是主键(一列是int,另一列是datetime) 每当我尝试查询nhibernate时,都会收到以下错误消息: 无法解析属性:invdate of:Models.Invoice 我在设置映射时是否遗漏了一些简单的内容,或者我的查询是否有误 目标代码: public class Invoice { public Invoice() { } #region Properties public virtual
public class Invoice
{
public Invoice() { }
#region Properties
public virtual int Acct_Link { get; private set; }
public virtual DateTime Added { get; private set; }
public virtual DateTime InvDate { get; private set; }
public static Invoice GetInvoiceByFluent( int accountId, DateTime invoiceDate )
{
Invoice invoice;
using ( ISession session = FluentNHibernateHelper.OpenSession() )
{
invoice = session
.CreateCriteria<Invoice>()
.SetMaxResults(1)
.Add( Expression.Eq( "Acct_Link", accountId ) )
.Add( Expression.Eq( "invdate", invoiceDate ) )
.UniqueResult<Invoice>();
}
return invoice;
}
#region Nhibernate overrides
public override bool Equals( object obj )
{
if ( obj == null )
return false;
Invoice i = obj as Invoice;
return this.GetHashCode() == i.GetHashCode();
}
public override int GetHashCode()
{
return this.Acct_Link.GetHashCode() ^ this.InvDate.GetHashCode();
}
#endregion
}
公共类发票
{
公共发票(){}
#区域属性
公共虚拟整数帐户链接{get;私有集;}
添加了公共虚拟日期时间{get;private set;}
公共虚拟日期时间InvDate{get;private set;}
公共静态发票GetInvoiceyFluent(int accountId,DateTime invoiceDate)
{
发票;
使用(ISession session=FluentNHibernateHelper.OpenSession())
{
发票=会话
.CreateCriteria()
.SetMaxResults(1)
.Add(Expression.Eq(“账户链接”,accountId))
.Add(表达式.Eq(“invdate”,invoiceDate))
.UniqueResult();
}
退货发票;
}
#无纤维覆盖区
公共覆盖布尔等于(对象对象对象)
{
if(obj==null)
返回false;
发票i=作为发票的obj;
返回此.GetHashCode()==i.GetHashCode();
}
公共覆盖int GetHashCode()
{
返回此.Acct_链接.GetHashCode()^this.InvDate.GetHashCode();
}
#端区
}
映射代码:
public class InvoiceMap: ClassMap<Invoice>
{
public InvoiceMap()
{
Table( "Invoice" );
CompositeId()
.KeyProperty( i => i.Acct_Link, "Acct_Link" )
.KeyProperty( i => i.InvDate, "InvDate" );
Map( i => i.Added );
}
}
公共类发票映射:类映射
{
公共发票地图()
{
表格(“发票”);
复合ID()
.KeyProperty(i=>i.Acct\u链接,“Acct\u链接”)
.KeyProperty(i=>i.InvDate,“InvDate”);
地图(i=>i.添加);
}
}
如果我在查询中去掉对invdate的引用,那么这就行了
提前感谢。属性名为
InvDate
,而不是InvDate
。试试这个:
.Add( Expression.Eq( "InvDate", invoiceDate ) )
谢谢真不敢相信我错过了这么简单的事情!别担心,在使用魔法字符串时,这种情况经常发生:-)