Ajax からのモデル バインディングを簡素化するために DB テーブルに null フィールドを許可するのは悪い習慣ですか?

StackOverflow https://stackoverflow.com/questions/1133556

質問

読んでください ここ そして ここ 問題の概要を簡単に把握し、「Ajax からのモデル バインディング」というときの意味を正確に理解するためです。

JavaScript からのモデル バインディングを可能にするために外部キー フィールドを null 可能にするのは悪い考えでしょうか?

たとえば、Ajax 呼び出し中に Person オブジェクトにバインドしたいとします。(PersonクラスはEntity Frameworkから作成されます)

public ActionResult Create(Person personToCreate)
{
    //Create person here
}

もし Person 持っていた Pet データベース内の外部キーであるオブジェクトを渡すことはできません。 Pet オブジェクトと ajax 呼び出しからの他のデータ。したがって、 Pet DB 内で null 可能であり、バインドされます。 Person 機能しないでしょう。

それで私が知りたいのは...モデルバインディングを行うには、 JavaScript から渡せない DB フィールドを null にすべきですか、またはできますか? それとも、ベスト プラクティスに従うために、カスタム モデル バインダーを作成し、オブジェクトの「フラット」バージョンにバインドする必要がありますか?オブジェクトのよりフラットなバージョンの例:

public class SimplePerson() {
   private string firstName;
   private string lastName;
   private string petName;
}

私がこれを尋ねる理由は、Entity Framework で作成したクラスの多くに外部キーが含まれているためです。つまり、それらのクラスのほぼすべてのフラットな複製を作成する必要があり、全体の全体に反しているように見えるからです。 ドライ 主要。

役に立ちましたか?

解決

あなたがリンクして投稿したものを読んだのですが、良い解決策が思いつきません。しかし、AJAX のために基礎となるデータベースを変更するという概念全体に不快感を感じます。それが素晴らしい答えではないことは承知しています。私自身も現在、いくつかの EF 設計の問題に悩んでいます。モデルのためにデータベースを変更したいという誘惑に駆られたことが何度かありましたが、そうするのはいつものことでした。過去に私を噛むために戻ってきました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top