したがって、私は再利用可能なライブラリを作成しています。 ORM操作には、コードによるNhibernateマッピングが使用されます。このライブラリを利用するサービスは複数ありますので、ライブラリを可能な限り動的に動作させたいと考えています。Nhibernate:1つのエンティティクラスの複数のクラスマップ
複数のサービスがあり、サービスごとにデータベース内に特定のテーブルがあり、サービス名の前にサービス名があります。 Unityはこの接頭辞を挿入し、1つのサービスしか使用しない場合はすべてうまく動作します。
今は、複数のサービスを読み込んで組み合わせるサービスを作成する必要があります。したがって、この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)
{
}
}
しかし、これは "重複クラス/エンティティマッピング" エラーがスローされます。 同じエンティティに対して2つの異なるクラスマップを使用すると、既にマッピングされたコレクションのコレクションがスローされます。
理想的には、ライブラリにネイティブに使用できる動的クラスマップが1つありますが、それは私が推測するオプションではありませんか?
これについてのアイデア、またはこれだけはうまくいくものではありませんか?