ASP MVC 4 と Entity Framework 4 を使用して、非常に単純な Web サイトを作成しようとしています。アプリケーションを共有ホスティング (GoDaddy) にデプロイし、変更のたびにテーブルを手動で変更したくないため、移行機能を使用する必要があります。
一対多の関係をモデル化する正しい方法は何ですか? 他のエンティティ タイプまたは他のエンティティの主キー タイプを使用していますか?
モデルをきれいに保つために好まれる他のエンティティ タイプを使用すると、移行ツールは機能しましたが、ASP MVC のスキャフォールディングは機能しませんでした。ドロップダウンを手動で追加して他のエンティティを選択した場合でも、ASP MVC は要求を正しく解析せず、他のエンティティ プロパティを設定しませんでした。
次の 2 つのオプションがあります。
オプション 1: 他のエンティティ タイプを使用します。
public class Tenant {
[Key]
public string TenantID { get; set; }
public string Name { get; set; }
}
public class Survey {
[Key]
public string SurveyID { get; set; }
[Required]
public Tenant Tenant { get; set; }
[Required]
[StringLength(100, MinimumLength=5)]
public string Title { get; set; }
[Required]
public DateTime CreatedAt { get; set; }
}
オプション 2: 主キー タイプを使用します。
public class Tenant {
[Key]
public string TenantID { get; set; }
public string Name { get; set; }
}
public class Survey {
[Key]
public string SurveyID { get; set; }
[Required]
public string TenantID { get; set; }
[Required]
[StringLength(100, MinimumLength=5)]
public string Title { get; set; }
[Required]
public DateTime CreatedAt { get; set; }
}
ASP MVC 4 プロジェクトで、Survey エンティティの足場を備えた MVC コントローラーを作成しました。CRUD コントローラーとビューを作成します。ビューには、テナント用のフィールドがありませんでした。自分で追加した後、メソッド Create(Tenant tenant) が呼び出されましたが、HTML フォームによって送信された Tenant フィールドが MVC によって解析されず、Survey エンティティの Tenant フィールドが設定されませんでした。
そうです