首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Fluent-Nhibernate对象的HasMany属性引用

Fluent-Nhibernate对象的HasMany属性引用
EN

Stack Overflow用户
提问于 2012-03-13 15:30:04
回答 1查看 2.1K关注 0票数 0

转诊有很多线索。然而,这些实体由代理标识符关联。在我的推荐实体中,为了使映射正确工作,我不得不添加映射到agent_id列的整数属性。

如果我从实体中删除AgentID属性并对"Agent“对象执行如下映射:

代码语言:javascript
复制
    HasMany(x => x.Leads)
        .AsBag()
        .KeyColumn("Agent_Id")
        .PropertyRef("Agent");

我遇到了一个错误:

对象与目标类型不匹配。

描述:在执行当前web请求时发生了未处理的异常。请查看堆栈跟踪以获得有关错误的更多信息,以及它起源于代码的位置。

异常详细信息: System.Reflection.TargetException: Object不匹配目标类型。

我想我是在问这是不是一个可以接受的解决方案?除了属性引用之外,其他任何地方都不会使用附加的AgentID属性。在必须更改域模型的情况下,是否有另一种方法来执行此映射,因为此时它无法更改。

工作映射

代码语言:javascript
复制
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");

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-13 16:19:11

我想是因为你

代码语言:javascript
复制
public LeadMap()
{
    Id(l => l.AgentId).Column("Agent_Id");
}

而不是

代码语言:javascript
复制
public LeadMap()
{
    CompositeId().KeyReference(l => l.Agent, "Agent_Id");
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9687071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档