2017-07-28 78 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的大師的一個明確的答案?

相關問題