2017-07-28 66 views
2

所以,我正在编写一个可重用的库。 ORM操作使用代码的Nhibernate映射。将会有多个服务使用这个库,所以我希望这个库的行为尽可能动态。Nhibernate:一个实体类的多个classmaps

会有多个服务,每个服务都会在数据库中找到特定的表,这些表以它们的服务名称作为前缀。 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) 
    { 
    } 
} 

但是,这将抛出一个 “重复类/实体映射” 的错误。 并且对于同一个实体有两个不同的classmaps,它会抛出Collection已经映射的错误。

理想情况下,我会有一个动态类图可以在库中本地使用,但这不是我猜的选项?

对此的任何想法,还是这是不会起作用的东西?

回答

0

任何NHibernate的大师的一个明确的答案?

相关问题