複合主キー(Azureテーブル、主キーは(PartitionKey、RowKey))を持つテーブルに対してFluent-nHibernateを使用する必要があります。流暢なnHibernateのためのコンベンションによる複合プライマリキー宣言
{
PartitionKey PK,
RowKey PK,
[..]
}
と実体
public class MyRecord
{
public virtual string PartitionKey{get;set;}
public virtual string RowKey{get;set;}
[...]
}
マイ:エンティティ(またはコンポーネントプロパティを持つ、より簡単にする場合)
に私のテーブルには、次のようになります現在のprojetは、AzureTableをターゲットとするカスタムnHibernate Driverを使用します。
私はそれがClassMapまたはXMLマッピングで動作するように管理しました。したがって、私はドライバーが働いていると確信しています。さらに、AzureテーブルのHTTPリクエストは、クラスマップまたはXML宣言を使用して正しいものです。
しかし、私は本当に慣習が必要なので、これは容認できる解決策ではありません。
最後に、Datastoreが(PartitionKey、RowKey)を使用する場合でも、RowKeyのみをPKとしてマップするオプションが常にあります。それも動作しますが、nHibernateと基礎となるデータストアの間のユニティシュアル処理の不一致が導入されるため、実際には満足できるものではありません。
UPDATE:
私は、カスタムIIdentityConventionを構築しようとしました。 IIdentityInstance.Column()メソッドは、最初の呼び出しのみを考慮に入れます。 しかし、リフレクションを使用して両方の列を基になるマッピングフィールドに追加すると、XML検証例外(属性 'クラス'が必要)でコンフィグレーションビルドが失敗します(属性 'クラス'が必要です)
ありがとう!それは私が最終的に私のAzureテーブルへのアクセスのためにnHibernateをあきらめたとしても動作します(多分私は別のショットを与えるでしょう...) – Eilistraee