【发布时间】:2012-03-14 00:19:11
【问题描述】:
推荐有很多潜在客户。然而,实体通过代理标识符相关联。在我的推荐实体中,我最终不得不添加一个映射到 agent_id 列的整数属性,以使映射正常工作。
如果我从实体中删除 AgentID 属性并像这样在“代理”对象上执行映射:
HasMany(x => x.Leads)
.AsBag()
.KeyColumn("Agent_Id")
.PropertyRef("Agent");
我遇到了一个错误:
对象与目标类型不匹配。
描述:执行过程中发生了未处理的异常 当前的网络请求。请查看堆栈跟踪以获取更多信息 有关错误的信息以及它在代码中的来源。
异常详细信息:System.Reflection.TargetException:对象没有 匹配目标类型。
我想,我在问这是否是一个可接受的解决方案?附加的 AgentID 属性不会在属性引用之外的任何地方使用。是否有另一种方法可以在必须更改域模型的情况下执行此映射,因为它目前无法更改。
工作映射:
public class Referral
{
public virtual int Id { get; set; }
public virtual int AgentID { get; set; }
public virtual Agent Agent { get; set; }
public virtual int? PositionNumber { get; set; }
public virtual DateTime? LastReferralDate { get; set; }
public virtual Account Account { get; set; }
public virtual IEnumerable<Lead> Leads { get; set; }
}
public ReferralMap()
{
Table("Referral");
LazyLoad();
Id(x => x.Id).GeneratedBy.Identity().Column("Id");
Map(x => x.PositionNumber).Column("PositionNumber");
Map(x => x.LastReferralDate).Column("LastReferralDate");
Map(x => x.AgentID).Column("Agent_ID");
References(x => x.Agent).Column("Agent_ID");
References(x => x.Account).Column("Account_id");
HasMany(x => x.Leads)
.AsBag()
.KeyColumn("Agent_Id")
.PropertyRef("AgentID");
}
【问题讨论】:
标签: nhibernate fluent-nhibernate