所以,我正在编写一个可重用的库。并且代码的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已映射的错误。
理想情况下,我会有一个动态类图,可以在库中原生使用,但我觉得这不是一个选项吗?
对此有任何想法,或者这是不起作用的东西?
答案 0 :(得分:0)
任何NHibernate大师都有明确的答案?