Fluent NHibernateを使用してデータベーススキーマの残りのテーブルインデックスを生成することは可能ですか?私は自動化されたビルドプロセスを介して完全なデータベースDDLを生成できるようにしたいと考えています。Fluent NHibernateを使用してテーブルインデックスを生成する
23
A
答えて
44
流暢NHibernateはの最近のバージョンでは、むしろ(もはや存在しない)SetAttribute
を使用するよりも、これを行うためにIndex()
メソッドを呼び出すことができます。
Map(x => x.Prop1).Index("idx__Prop1");
15
列のインデックスを意味していますか?
ファイルClassMap<...>
には、.SetAttribute("index", "nameOfMyIndex")
を追加して手動で設定できます。ように:
Map(c => c.FirstName).SetAttribute("index", "idx__firstname");
またはオートマトンの属性機能を使用して行うことができます。
{
var model = new AutoPersistenceModel
{
(...)
}
model.Conventions.ForAttribute<IndexedAttribute>(ApplyIndex);
}
void ApplyIndex(IndexedAttribute attr, IProperty info)
{
info.SetAttribute("index", "idx__" + info.Property.Name");
}
してからエンティティにこれを行う:あなたの永続化モデルを作成した後
:とても似
[Indexed]
public virtual string FirstName { get; set; }
私は後者が好きです。あなたのドメインモデルに悪影響を与えないようにすることと、何が起こっているかについては依然として非常に効果的で明確であることの間には良い妥協点ですか?
+0
を私が探していた正確に何が。ありがとうございました。 –
10
Mookidの答えはすばらしく、私を大いに助けましたが、一方で進化しているFluent NHibernate APIは変更されました。
public class IndexedPropertyConvention : AttributePropertyConvention<IndexedAttribute>
{
protected override void Apply(IndexedAttribute attribute, IProperty target)
{
target.SetAttribute("index", "idx__" + target.Property.Name);
}
}
[索引]属性は、今と同じように動作します:IndexedPropertyConventionは以下の通りです
//...
model.ConventionDiscovery.Setup(s =>
{
s.Add<IndexedPropertyConvention>();
//other conventions to add...
});
:
だから、今mookidサンプルを書き込むための正しい方法は次のとおりです。
関連する問題
- 1. Fluent Nhibernateを使用してパラメータでnhibernateカスタムタイプをマッピングする
- 2. エラー:node-fluent-ffmpegを使用してEACCESを生成する
- 3. FluentとNHibernateを使用したジェネリック
- 4. Fluent NHibernateを使用してディスクリミネータ値を指定する
- 5. Fluent NHibernateを使用してデータベースをエクスポートするには?
- 6. Fluent NhibernateオートメーションとGUID/UniqueIdentifierをプライマリキーフィールドとして使用する
- 7. Fluent NHibernateがSQLCEを使用してセッションファクトリを作成できません
- 8. Fluent NHibernateの地図構成
- 9. Fluent Nhibernateが1対多の無効な列名を生成
- 10. Fluentによって生成されたクエリを知る方法NHibernate
- 11. Fluent Nhibernateを使用してバインドグリッドの変更をキャンセルする方法
- 12. MVCでFluent NHibernateを使用してCreateビューのオブジェクトをマップする
- 13. NHibernateでFluent NHibernate 3.0
- 14. Fluent NhibernateとNhibernate 2.1.0.1003
- 15. Fluent NHibernateはNHibernateのすべてのマッピングをサポートします
- 16. Automapperを使用してカスケード削除を使用してFluent NHibernate one-to-manyを設定する
- 17. FluentMappingsを使用して、Fluent NHibernateのClassMap内のプロパティを無視します
- 18. Fluent NhibernateのCompositeIDの一部としてInterfaceを使用する方法
- 19. NHibernateを使用して本番用のスキーマを生成するためのベストプラクティス
- 20. Fluent Nhibernateを使用したエンティティベースのキーを使用したマッピング辞書
- 21. Fluent Nhibernateオートマッピングを使用する多対多リレーションシップ
- 22. Fluent NHibernateとASP.NET MVCを使用したDRYモデル
- 23. Fluent NHibernate、Oracle 10gおよびOracleClientConfiguration.Oracle10を使用したクロップのマッピング
- 24. Fluent NHibernateを使用したMono 2.4のASP.NET MVC 1と2
- 25. NHibernateジャンクションテーブルのマルチカラムプライマリキーを使用したFluent多対多マッピング
- 26. Fluent Hibernateを使用したT4テンプレートからLINQ2SQLクラスを生成する方法
- 27. キャッシングFluent NHibernate ISessionFactory
- 28. Fluent Nhibernate ImportType
- 29. Fluent NHibernate Complexコンポジットキーマッピング
- 30. SharpArchitecture/Fluent NHibernate
正しいですが、APIが変更されました。これは現在、インデックスを設定する正しい方法と考えられています。私はこの変更を反映するためにこの質問の答えを更新しました。ありがとうございました。 –