私は、ConfORM 用の最初のカスタム列名アプライヤーを書いています。
別の列が同じマッピング名で既にマップされているかどうかを確認するにはどうすればよいですか?
これは私がこれまでに持っているものです:
public class MyColumnNameApplier : IPatternApplier<PropertyPath, IPropertyMapper>
{
public bool Match(PropertyPath subject)
{
return (subject.LocalMember != null);
}
public void Apply(PropertyPath subject, IPropertyMapper applyTo)
{
string shortColumnName = ToOracleName(subject);
// How do I check if the short columnName already exists?
applyTo.Column(cm => cm.Name(shortColumnName));
}
private string ToOracleName(PropertyPath subject)
{
...
}
}
}
Oracle の 30 文字制限に適合するように、生成された列名を 30 文字未満に短縮する必要があります。列名を短くしているため、同じ列名が 2 つの異なるプロパティを生成する可能性があります。重複マッピングがいつ発生するかを知りたいです。
このシナリオを処理しない場合、ConfORM/NHibernate は 2 つの異なるプロパティが同じ列名を「共有」することを許可します。これは明らかに問題を引き起こします。