0

私には2つのクラスがあります:

public class User
{
  public virtual int Id { get; set; }
  public virtual string Name { get; set; }
}

public class Report
{
  public virtual int Id { get; set; }
  public virtual string Name { get; set; }
  public virtual User User { get; set; }
}

...ここで、クラスUserはデータベース内の既存のテーブルです。ここで、データベースにテーブルとして追加したいと思いReportます。このために、FluentNHibernateを使用する予定です。クラスからアクセスできるようにしたいので、Userとの両方をマッピングしています。との間には1対多の関係があります。ReportUserReportUserReport

SQLスクリプトをデータベースにエクスポートするテストがすでにありUser、これらに含まれています。Userここで、FNHによって生成されたスクリプトもエクスポートしたいのですが、FNHはすでにデータベースにあるため、生成したくありません。

したがって、SchemaAction.None()のマッピングで指定できますUser。これにより、FNHはのスクリプトを生成せずUser、のスクリプトのみを生成しますResult。唯一の問題は、テーブルに外部キーが生成されないことですReportUserFNHで生成されたスクリプトをエクスポートせずに、テーブルの外部キーをエクスポートするにはどうすればよいReportですか?

SchemaActionを指定しないと、テーブルUserReportが作成され、外部キーReportが生成されます。

4

1 に答える 1

1
  1. 古い/既存のスキーマを新しいデータベースにコピーする
  2. マッピングと既存のデータベースを使用して NHibernate 構成を作成する
  3. このコードを使用して、更新スクリプトをファイルに書き込みます

    using (var file = new StreamWriter("SchemaUpdateScript.txt"))
    {
        new SchemaUpdate(config).Execute(file.WriteLine, false);
    }
    
  4. 更新スクリプトが実際に意図したとおりに動作することを再確認してください

ポイント1.は任意です。本番環境で SchemaUpdate を直接使用しないことを強くお勧めします。

于 2013-01-07T09:00:20.103 に答える