1

ベスト プラクティスと思われるように、外部キー ID を非表示にするように NHibernate モデルを構築したので、リレーションシップとキーの両方を次のようにモデル化する代わりに、次のようにします。

public class CompanyOffice
{
    public virtual int Id { get; set; }
    public virtual int CompanyId { get; set; }
    public virtual Company Company { get; set; }
}

私は単に持っています:

public class CompanyOffice
{
    public virtual int Id { get; set; }
    public virtual Company Company { get; set; }
}

あとは NHibernate に任せましょう。私はこれが好きですが、設定が必要な複数の外部キーを持ついくつかのテーブルがあり、MVC アクションで新しいエンティティを作成するときに、これを行う必要があります。

public ActionResult CreateNewThing(int stuffId, int whatId, int blahId)
{
    var stuff = _service.GetStuffById(stuffId);
    var what = _service.GetWhatById(whatId);
    var blah = _service.GetBlahById(blahId);

    var thing = new Thing { Stuff = stuff, What = what, Blah = blah };
}

これは、エンティティを取得するためにデータベースに 3 回アクセスする必要があることを意味しますが、ID は既に取得済みであり、実行できたはずなのでエンティティは必要ありません。

var thing = new Thing { StuffId = stuffId, WhatId = whatId, BlahId = blahId };

エンティティのデータベースにアクセスせずに、私がやろうとしていることを達成する別の方法はありますか?
弾丸を噛んで、外部キーと関係をマップするだけですか?
それとも、データベースのトリップについて心配しているのでしょうか?

4

1 に答える 1