でオブジェクトを永続化する私の簡素化ドメインモデルは、このようなものになります。MVC2で検索を管理し、NHibernateの
public abstract class Entity<IdK>
{
public virtual IdK Code { get; protected set; }
}
public class Contact : Entity
{
public virtual string Name { get; set; }
public virtual Company Company { get; set; }
}
public class Company : Entity
{
public virtual string Name { get; set; }
}
を、私はのviewmodelを定義した:
public ContactViewModel()
{
public Guid Code { get; set; }
public int Version { get; set; }
public string Name { get; set; }
public string Company { get; set; }
public List<SelectListItem> Companies { get; set; }
}
ビューで私の連絡先を管理します。ユーザーは自分のフォームを送信するとき、今すぐ
<%=Html.ListBoxFor(m => m.Company, (List<System.Web.Mvc.SelectListItem>)Model.Companies)%>
:
は、私は、ユーザーが私はこのような私の見解でレンダリングされますSelectedListItemのリストを追加した企業のリストから選択することができるようにしたいので、私はそれを保存する前に私のモデルで私のビューモデルを再マップします。
Contactを入力し、ContactViewModel.CompanyのIDを使用して、Contactクラスのプロパティに関連付けるCompanyタイプのオブジェクトを作成します。
私はデータベースから会社全体を取得したくないので、IDを入力してください。 私の連絡先を維持すると、例外が発生します。"not-nullプロパティはnullまたは一時的なDomain.Contact.Company"を参照しています。
MVC + Nhibernateでルックアップと永続性を管理する最適なソリューションは何ですか?
あなたの経験から何か提案がありますか?
ありがとうlomaxx。私は最初の選択肢に行くと思う。それはあなたのルックアップを管理する方法ですか? – LeftyX
はい、私は彼の最初の方法を使用します。私は偶然にいくつかの読書をしていましたが、この正確な問題を説明する記事へのリンクを追加しました。これは、昨晩行ったいくつかのテストと組み合わせれば、データベースヒットを避けるための正しい方法だということを示唆しています。 – lomaxx
私はあなたのソリューションを試してみました。ご協力いただきありがとうございます。 – LeftyX