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已经映射的错误。
理想情况下,我会有一个动态类图可以在库中本地使用,但这不是我猜的选项?
对此的任何想法,还是这是不会起作用的东西?