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已經映射的錯誤。
理想情況下,我會有一個動態類圖可以在庫中本地使用,但這不是我猜的選項?
對此的任何想法,還是這是不會起作用的東西?