Fluent nHibernate 自动映射 - AutoMapping 覆盖问题

发布于 2024-11-16 10:00:37 字数 1201 浏览 3 评论 0原文

我刚刚尝试使用 Fluent Automapping 启动并运行一个项目(我熟悉 Fluent 但曾经编写每个映射)

我有一个对象 ScriptType ,它具有 ParseRules 属性,

public class ScriptType : EntityBase
{
    public virtual string Name { get; set; }
    public virtual IList<ParseRule> ParseRules { get; set; }
}

这被自动映射为 HasMany 和我想要参考文献。

因此,我向另一个程序集添加了 AutoMapping 覆盖...

public class ScriptTypeOverride : IAutoMappingOverride<ScriptType>
{
    public void Override(AutoMapping<ScriptType> mapping)
    {
        mapping.References(x => x.ParseRules);
    }
}

并更改了我的配置...

return configuration
            .Mappings(m => m.AutoMappings
                               .Add(AutoMap.AssemblyOf<DatabaseInfo>()
                                        .IgnoreBase<EntityBase>()
                                        .Conventions.AddFromAssemblyOf<KeyConvention>()
                                        .UseOverridesFromAssemblyOf<ScriptTypeOverride>()));

但我得到了这个.... :(

表 ScriptType 中的关联引用了未映射的类:System.Collections.Generic.IList `1[[GIT.ScriptWizard.Entities.ParseRule ...

任何人都可以帮忙吗?

I've just tried to get a project up and running with Fluent Automapping (I'm familiar with Fluent but used to write each of the maps)

I have an object ScriptType which has a ParseRules property

public class ScriptType : EntityBase
{
    public virtual string Name { get; set; }
    public virtual IList<ParseRule> ParseRules { get; set; }
}

This is being Auto Mapped as HasMany and I wanted References.

I therefore added an AutoMapping override to another assembly ...

public class ScriptTypeOverride : IAutoMappingOverride<ScriptType>
{
    public void Override(AutoMapping<ScriptType> mapping)
    {
        mapping.References(x => x.ParseRules);
    }
}

And altered my configuration as so ...

return configuration
            .Mappings(m => m.AutoMappings
                               .Add(AutoMap.AssemblyOf<DatabaseInfo>()
                                        .IgnoreBase<EntityBase>()
                                        .Conventions.AddFromAssemblyOf<KeyConvention>()
                                        .UseOverridesFromAssemblyOf<ScriptTypeOverride>()));

But I get this .... :(

An association from the table ScriptType refers to an unmapped class: System.Collections.Generic.IList`1[[GIT.ScriptWizard.Entities.ParseRule ...

Can anyone help please?

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

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

发布评论

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

评论(1

雨落□心尘 2024-11-23 10:00:37

References 用于创建多对一
两个实体之间的关系,
并应用于“多方”。
您正在引用其他人
实体,因此您使用References
方法。 HasMany 是“另一面”
References 关系,并获取
应用在“一侧”。

来自 Fluent 网站

你们的关系应该如何运作?它看起来像一个经典的 ScriptType-to-many ParseRules,所以这应该是 ScriptType 上的 HasMany侧面,就像 Fluent 所做的那样。

也许,如果您想在这里建立双向关系,其中 ParseRule 一侧是关系的“拥有”一侧,您应该在 中使用 Inverse() ScriptType.ParseRules 映射覆盖。

References is for creating many-to-one
relationships between two entities,
and is applied on the "many side."
You're referencing a single other
entity, so you use the References
method. HasMany is the "other side" of
the References relationship, and gets
applied on the "one side."

From Fluent's website.

How should your relation work? It looks like a classic one ScriptType-to-many ParseRules, so this should be HasMany on ScriptType's side, as Fluent does.

Maybe, if you want to have bidirectional relationship here, where ParseRule's side is the "owning" side of the relation, you should use Inverse() in ScriptType.ParseRules mapping override.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文