【问题标题】:Fluent-Nhibernate HasMany property reference on an object对象上的 Fluent-Nhibernate HasMany 属性引用
【发布时间】: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


    【解决方案1】:

    我猜是因为你有

    public LeadMap()
    {
        Id(l => l.AgentId).Column("Agent_Id");
    }
    

    而不是

    public LeadMap()
    {
        CompositeId().KeyReference(l => l.Agent, "Agent_Id");
    }
    

    【讨论】:

    • 感谢 Firo,虽然这不是问题,但它为我指明了正确的方向。事实证明,使用公式映射 .Formula("(select count(*) fromleads l where l.Agent_id = Agent_ID)") 比在不需要的东西上指定连接更容易。
    猜你喜欢
    • 2011-02-27
    • 2012-04-03
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    • 2012-10-19
    • 2011-12-20
    • 2011-04-15
    • 1970-01-01
    相关资源
    最近更新 更多