0

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 フィールドが設定されませんでした。

そうです

4

2 に答える 2

1

これらは、1 対多ではなく、1 対 1 の関係をマッピングしているように見えます。1 つの調査が複数のテナントを持つことができる場合:

public class Tenant {
    [Key]
    public string TenantID { get; set; }
    public string Name { get; set; }
public virtual  Survey Survey  {get; set;}
  }


  public class Survey {
    [Key]
    public string SurveyID { get; set; }

    [Required]
    [StringLength(100, MinimumLength=5)]
    public string Title { get; set; }

    [Required]
    public DateTime CreatedAt { get; set; }

    public virtual ICollection<Tenant> Tenant {get; set;}
}
于 2012-08-05T11:03:32.110 に答える
-1

EF と ASP MVC の両方で動作するように EF モデルを作成する方法を説明するこの一連の投稿を見つけました。アイデアは、「プレーンな」参照型と強力な参照型の両方を持つことです。

public class Team
{
    public int TeamId { get; set; }
    // ... other Team properties go here

    // Each Team has an optional "next opponent" which is another Team
    public int? NextOpponentId { get; set; }
    [ForeignKey("NextOpponentId")] public virtual Team NextOpponent { get; set; }

    // Each Team also has a required Manager and Administrator, both of which are people
    public int ManagerId { get; set; }
    public int AdministratorId { get; set; }
    [ForeignKey("ManagerId")] public virtual Person Manager { get; set; }
    [ForeignKey("AdministratorId")] public virtual Person Administrator { get; set; }
}
于 2012-08-05T13:41:26.427 に答える