Fluent nHibernate 映射引用的另一侧

发布于 2024-11-09 07:00:40 字数 454 浏览 2 评论 0原文

我有一个类似于下面的表结构:

AttributeKey (ID, Title)
AttributeValue (ID, AttributeKeyID, Value)

我已经完成了所有映射设置,以便如果我查询 AttributeValue,它会使用引用连接到 AttributeKey (AttributeValue.AttributeKeyID = AttributeKey.ID),没问题...但是,我想查询 AttributeKey 表并 LEFT JOIN 到 AttributeValue 表,以便获得所有 AttributeKey 以及与它们关联的任何值...如何在流畅的 nHibernate 中映射它?

本质上它是引用映射的逆过程。

编辑:我知道 HasMany 方法与引用相反,但使用该方法会引发异常,即我的属性未实现 UserCollectionType

干杯

I've got a table structure similar to the below:

AttributeKey (ID, Title)
AttributeValue (ID, AttributeKeyID, Value)

I've got my mapping all setup so that if I query AttributeValue, it joins to AttributeKey (AttributeValue.AttributeKeyID = AttributeKey.ID) using References, no problem... however, I want to query the AttributeKey table and LEFT JOIN onto the AttributeValue table so that I get all AttributeKeys and any values ascociated to them... how do I map this in fluent nHibernate?

Essentially it's the reverse of a References mapping.

EDIT: I'm aware that the HasMany method is meant to be the reverse of References but using that throws the exception that my property doesn't implement UserCollectionType

Cheers

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

神也荒唐 2024-11-16 07:00:40

这应该是 AttributeKey ClassMap 中的 HasMany。您的类应该如下所示:

public class AttributeKey
{
    public int Id { get; set; }
    public string Title { get; set; }
    public IList<AttributeValue> AttributeValues { get; set; }
}

然后您的映射将如下所示:

public class AttributeKeyMap : ClassMap<AttributeKey>
{
    public AttributeKeyMap()
    {
        Id(x => x.Id, "ID");
        Map(x => x.Title);
        HasMany(x => x.AttributeValues)
            .KeyColumn("AttributeKeyID")
            .Inverse()
            .Cascade.AllDeleteOrphan();
    }
}

This should be a HasMany in your AttributeKey ClassMap. Your class should look something like this:

public class AttributeKey
{
    public int Id { get; set; }
    public string Title { get; set; }
    public IList<AttributeValue> AttributeValues { get; set; }
}

Your mapping would then look like this:

public class AttributeKeyMap : ClassMap<AttributeKey>
{
    public AttributeKeyMap()
    {
        Id(x => x.Id, "ID");
        Map(x => x.Title);
        HasMany(x => x.AttributeValues)
            .KeyColumn("AttributeKeyID")
            .Inverse()
            .Cascade.AllDeleteOrphan();
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文