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. FluentとNHibernateを使用したジェネリック
- 3. Fluent NHibernateを使用してディスクリミネータ値を指定する
- 4. Fluent NHibernateを使用してデータベースをエクスポートするには?
- 5. エラー:node-fluent-ffmpegを使用してEACCESを生成する
- 6. Fluent NhibernateオートメーションとGUID/UniqueIdentifierをプライマリキーフィールドとして使用する
- 7. Fluent NHibernate Automappingで作成日付を自動的に生成
- 8. Fluent NHibernateがSQLCEを使用してセッションファクトリを作成できません
- 9. Fluent NHibernateの地図構成
- 10. Javaコードを使用してHibernateテーブルインデックスを作成します。
- 11. NHibernateでFluent NHibernate 3.0
- 12. Fluent NhibernateとNhibernate 2.1.0.1003
- 13. Fluent Nhibernateが1対多の無効な列名を生成
- 14. Fluent NHibernateはNHibernateのすべてのマッピングをサポートします
- 15. Fluentによって生成されたクエリを知る方法NHibernate
- 16. MVCでFluent NHibernateを使用してCreateビューのオブジェクトをマップする
- 17. Fluent Nhibernateを使用してバインドグリッドの変更をキャンセルする方法
- 18. NHibernateまたはFluent NHibernate?
- 19. Fluent NHibernateのNHibernate設定プロパティ
- 20. NHibernate 2 + Fluent Nhibernate medium trust
- 21. nHibernate ManyToManyToMany with Fluent
- 22. Fluent NHibernate Mapping Issue
- 23. Fluent Nhibernate left join
- 24. Fluent Nhibernate ImportType
- 25. C#Fluent nhibernate
- 26. Fluent NHibernate Duplicate Columns
- 27. Fluent NHibernate Automappingエラー
- 28. Fluent NHibernate HasManyToMany()マッピング
- 29. Fluent nHibernate dictionary customType
- 30. Fluent-nHibernate from results
正しいですが、APIが変更されました。これは現在、インデックスを設定する正しい方法と考えられています。私はこの変更を反映するためにこの質問の答えを更新しました。ありがとうございました。 –