【问题标题】:nhibernate mapping An association from the table Image refers to an unmapped classnhibernate 映射 来自表 Image 的关联引用了一个未映射的类
【发布时间】:2014-04-24 04:39:43
【问题描述】:

我有两个类 MyArticle 和 Image。

public class MyArticle : IArticle{
    ....
    public virtual List<Image> Images {get; set;}
}
public class Image{
    ...
    public IArticle Article {get; set;}
}

通过代码使用 nhibernate 映射我映射了那些

public class ImageMap : ClassMapping<Image>
    {
        public ImageMap()
        {            
            ManyToOne(x => x.Article, m =>
            {
                m.NotNullable(true);
            });
        }
}

public class MyArticleMap: ClassMapping<MyArticle>
        {
            public MyArticleMap()
            {            
                Bag(x => x.Images,
              c => { },
              r => { r.OneToMany(); }
            );

            }
    }

当尝试对映射进行单元测试时,它会因错误而失败 {"Image 表中的关联引用了一个未映射的类:MyApp.Model.IArticle"}

【问题讨论】:

    标签: c# .net nhibernate nhibernate-mapping


    【解决方案1】:

    试试这个:

    public class ImageMap : ClassMapping<Image>
    {
        public ImageMap()
        {            
            ManyToOne(x => x.Article, m =>
            {
                m.NotNullable(true);
                m.Class(typeof(MyArticle));
            });
        }
    }
    

    【讨论】:

    • 这是否意味着我应该列出所有在 m.Class 中实现 IArticle 接口的对象?如果是,您能否提供另一种类型的示例
    • 如果有实现列表,需要引用基类,阅读nhforge.org/doc/nh/en/index.html#inheritance
    【解决方案2】:

    这个映射是错误的

    public class MyArticleMap: ClassMapping<MyArticleMap>{...}
    

    应该是

    public class MyArticleMap: ClassMapping<MyArticle>{...}
    

    而且图像列表应该是这样的接口类型。

    public virtual IList<Image> Images {get; set;}
    

    【讨论】:

    • ArticleMap as parameter 是错字,我贴错了。错误仍然存​​在。
    • 这应该是注释,因为第一个错误很可能是错字,第二点是样式问题。
    • 我认为这篇文章解释了同样的问题stackoverflow.com/questions/2029436/…
    猜你喜欢
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多