私は流暢な nhibernate と nhibernate を初めて使用します。エンティティの多対多マッピングの作成を処理する流暢な nhibernate 自動永続化規則を作成したいと考えています。
これは私が今持っているものです:
using System;
using FluentNHibernate.Conventions;
using FluentNHibernate.Mapping;
namespace Namespace
{
public class HasManyToManyConvention : IHasManyToManyConvention
{
public bool Accept(IManyToManyPart target) {
return true;
}
public void Apply(IManyToManyPart target) {
var parentName = target.EntityType.Name;
var childName = target.ChildType.Name;
const string tableNameFmt = "{0}To{1}";
const string keyColumnFmt = "{0}Fk";
string tableName;
if (parentName.CompareTo(childName) < 0) {
tableName = String.Format(tableNameFmt, parentName, childName);
}
else {
tableName = String.Format(tableNameFmt, childName, parentName);
}
target.WithChildKeyColumn(String.Format(keyColumnFmt, childName));
target.WithParentKeyColumn(String.Format(keyColumnFmt, parentName));
target.WithTableName(tableName);
target.Cascade.All();
}
}
}
うまくいくように見えますが、これを行うためのより良い方法があると感じています。
今私の質問:
- これを行うためのより良い方法はありますか?
- 通常、ここでカスケード動作が必要ですか?
- この関連付けの両側が同じテーブル名になることを確認する以外に、何か心配する必要はありますか?