推荐有很多线索。然而,实体通过代理标识符相关联。在我的推荐实体中,我最终必须添加一个映射到agent_id列的整数属性,以使映射正常工作。
如果我从实体中删除AgentID属性并在“Agent”对象上执行映射,如下所示:
HasMany(x => x.Leads)
.AsBag()
.KeyColumn("Agent_Id")
.PropertyRef("Agent");
我遇到了错误:
对象与目标类型不匹配。
描述:执行期间发生了未处理的异常 当前的网络请求。请查看堆栈跟踪了解更多信息 有关错误的信息以及它在代码中的起源。
异常详细信息:System.Reflection.TargetException:Object没有 匹配目标类型。
我想,我在问这是否是一个可接受的解决方案?额外的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");
}
答案 0 :(得分:1)
我猜是因为你有
public LeadMap()
{
Id(l => l.AgentId).Column("Agent_Id");
}
而不是
public LeadMap()
{
CompositeId().KeyReference(l => l.Agent, "Agent_Id");
}