转诊有很多线索。然而,这些实体由代理标识符关联。在我的推荐实体中,为了使映射正确工作,我不得不添加映射到agent_id列的整数属性。
如果我从实体中删除AgentID属性并对"Agent“对象执行如下映射:
HasMany(x => x.Leads)
.AsBag()
.KeyColumn("Agent_Id")
.PropertyRef("Agent");我遇到了一个错误:
对象与目标类型不匹配。
描述:在执行当前web请求时发生了未处理的异常。请查看堆栈跟踪以获得有关错误的更多信息,以及它起源于代码的位置。
异常详细信息: 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");
}发布于 2012-03-13 16:19:11
我想是因为你
public LeadMap()
{
Id(l => l.AgentId).Column("Agent_Id");
}而不是
public LeadMap()
{
CompositeId().KeyReference(l => l.Agent, "Agent_Id");
}https://stackoverflow.com/questions/9687071
复制相似问题