我收到以下异常:
"Could not find a setter for property 'ProductCode'in class ...OrderItem.class "
属性(ProductCode)是我的一个表键。
了解该类中的属性声明是什么。
public class OrderItem : EntityBase
{
public virtual short Company { get; set; }
public virtual int Order { get; set; }
public virtual string Seri { get; set; }
public virtual string ProductCode { get; set; }
public virtual string Crop { get; set; }
.
.
.
}
在我的映射下面。
public MapOrderItem()
{
Table("IPED");
CompositeId()
.KeyProperty(c => c.Company, "C_EMP")
.KeyProperty(c => c.Order, "P_PED")
.KeyProperty(c => c.Seri, "S_PED")
.KeyProperty(c => c.ProductCode, "C_PSV");
Map(c => c.C_CFO).Not.Nullable();
Map(c => c.AnotherCurrency).Column("V_IPE");
.
.
.
}
检查了类似于我的疑问,但解决方案并没有解决我的问题。
已经尝试使用执行映射
(c => c.ProductCode).Access.ReadOnly();
(c => c.ProductCode).Access.Field();
(c => c.ProductCode).ReadOnly();
直接在数据库中运行查询,不会显示任何错误,只显示正确的数据。
答案 0 :(得分:7)
如果使用NHibernate执行SQL,请验证sql中列的别名。该名称应与您班级中的属性完全一样。
e.g。不正确的:
select Product_Id as "ProductCode "
from Products
请参阅别名中的空白区域。这可能是您的错误的原因。
检查sql中所有列的别名。