1

Fluent NHibernate を使用して、Oracle データベースの自動マップを行いました。My Domain クラスには、プロパティ名としていくつかの Oracle キーワードがあります。例: グループは Oracle のキーワードです。グループを列として使用する場合は、引用符で囲む必要があります (「グループ」のように)。Fluent NHibernate でこれを処理するにはどうすればよいでしょうか。

IColumnInstances を変更して ColumnName メソッドを追加し、規約を追加しました。このコードを追加すると、別のエラー「ORA-00907: 右括弧がありません」がスローされます。代替ソリューションはありますか?

ここにコードがあります

public class ColumnNameConvention : IColumnConvention
{
    public void Apply(IColumnInstance instance)
    {
        try
        {
            if (instance.Name.Length > 30)
            {
                instance.ColumnName(instance.Name.Substring(instance.Name.Length - 25, 25));
            }
            else
            {
                instance.ColumnName("\"" + instance.Name + "\"");
            }
            instance.Length(200);
        }
        catch (System.Exception ex)
        {
            throw ex;
        }
    }
}
4

2 に答える 2

2

あなたの場合に使用する正しい魔法の記号は 次の とおり です。

ここで確認してください:

例:

Map(x => x.Group).Column("`Group`");

グローバル設定の興味深い読み物:

例:

FluentConfiguration configuration = ...

configuration
 .ExposeConfiguration(x => x.SetProperty("hbm2ddl.keywords", "auto-quote"));

return configuration.BuildSessionFactory();

また

SchemaMetadataUpdater.QuoteTableAndColumns(config)
于 2013-05-20T04:30:52.427 に答える