Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Fluent Nhibernate,复合键,无法解析属性:错误消息_C#_Database_Nhibernate_Fluent Nhibernate_Data Access - Fatal编程技术网

C# Fluent Nhibernate,复合键,无法解析属性:错误消息

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

我有一个简单的对象,有三个属性。这链接到一个有三列的表,其中两列是主键(一列是int,另一列是datetime)

每当我尝试查询nhibernate时,都会收到以下错误消息:

无法解析属性:invdate of:Models.Invoice

我在设置映射时是否遗漏了一些简单的内容,或者我的查询是否有误

目标代码:

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 ) )

谢谢真不敢相信我错过了这么简单的事情!别担心,在使用魔法字符串时,这种情况经常发生:-)