こことここを読んで、私の問題の概要を簡単に把握し、Ajaxからのモデルバインディングと言ったときの意味を正確に確認してください。
javascriptからのモデルバインディングを可能にするために外部キーフィールドをnull許容にするのは悪い考えですか?
たとえば、次のajax呼び出し中にPersonオブジェクトにバインドする必要があります...(PersonクラスはEntity Frameworkから作成されます)
public ActionResult Create(Person personToCreate)
{
//Create person here
}
Persondbに外部キーであるオブジェクトがあった場合、ajax呼び出しからの他のデータと一緒にオブジェクトPetを渡すことはできません。Petしたがって、PetがDBでnull許容でない限り、へのバインドは機能しPersonません。
だから私が知りたいのは...モデルバインディングを行うために、JavaScriptから渡すことができないdbフィールドをnullにする必要がありますか?または、ベストプラクティスに従うために、カスタムモデルバインダーを作成し、オブジェクトの「フラッター」バージョンにバインドする必要がありますか?オブジェクトのフラットバージョンの例:
public class SimplePerson() {
private string firstName;
private string lastName;
private string petName;
}
私がこれを尋ねる理由は、Entity Frameworkで作成されたクラスの多くに外部キーが含まれているためです。つまり、これらのクラスのほぼすべてのフラットな複製を作成する必要があり、DRYプリンシパル全体に反するようです。