Nhibernate:一个实体类的多个类映射

时间:2017-07-28 12:04:30

标签: c# nhibernate

所以,我正在编写一个可重用的库。并且代码的Nhibernate映射用于ORM操作。将有多个服务使用此库,因此我希望库尽可能动态地运行。

将有多个服务,并且对于每个服务,将在数据库中找到特定的表,这些表以其服务名称为前缀。 Unity将注入此前缀,并且只使用一个服务时,所有内容都很好用。

但现在我必须编写一个可以从多个服务中读取和组合的服务。所以这个libdummy项必须使用不同的表前缀多次映射。

public class LibDummy
{
    public virtual int Id { get; set; }
    public virtual string Guid { get; set; }
}

public class LibDummyMapping : ClassMapping<LibDummy>
{
    public LibDummyMapping(ServiceName service)
    {
        Table($"{service.Name}_LibDummy");

        Id(o => o.Id, m => m.Column("Id"));
        Property(o => o.Guid, m => m.Column("Guid"));
    }
}

我尝试这样做:

public class FirstLibDummyMapping : LibDummyMapping
{
    public FirstLibDummyMapping (ServiceName service) : base(service)
    {
    }
}

public class SecondLibDummyMapping : LibDummyMapping
{
    public SecondLibDummyMapping (ServiceName service) : base(service)
    {
    }
}

但这将引发一个&#34;重复的类/实体映射&#34;错误。 并且对于同一实体有2个不同的类映射,它将抛出Collection已映射的错误。

理想情况下,我会有一个动态类图,可以在库中原生使用,但我觉得这不是一个选项吗?

对此有任何想法,或者这是不起作用的东西?

1 个答案:

答案 0 :(得分:0)

任何NHibernate大师都有明确的答案?