0

「ADO.NET Entity Data Model」でモデル クラスを作成しているので、データベースを変更すると、モデル クラスも変更されます。

「ADO.NET Entity Data Model」からの最初のクラス。

public partial class TableA
    {
        public TableA()
        {
            this.TableBs = new HashSet<TableB>();
        }

        public int TableAID { get; set; }
        public string TableAName { get; set; }

        public virtual ICollection<TableB> TableBs { get; set; }
    }

「ADO.NET エンティティ データ モデル」の 2 番目のクラス。

    public partial class TableB
    {
        public TableB()
        {
            this.TableAs = new HashSet<TableA>();
        }

        public int TableBID { get; set; }
        public string TableBName { get; set; }
        public int TableCID { get; set; }

        public virtual TableC TableC { get; set; }
        public virtual ICollection<TableA> TableAs { get; set; }
    }

「ADO.NET エンティティ データ モデル」の 3 番目のクラス。

    public partial class TableC
    {
        public TableC()
        {
            this.TableBs = new HashSet<TableB>();
        }

        public int TableCID { get; set; }
        public string TableCName { get; set; }

        public virtual ICollection<TableB> TableBs { get; set; }
    }

そして私のViewModel;

public class MyViewModel
{
    public TableA tableA { get; set; }
    public IEnumerable<TableB> tableBs { get; set; }
    public IEnumerable<TableC> tableCs { get; set; }
}

そして、これを ViewModel で実行したいと考えています。

    [Required]
    [Display(Name = "TableA Name")]
    [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
    public string TableAName { get; set; }

これどうやってするの??

4

1 に答える 1

3

ViewModel は、生成されたドメイン クラス (TableA) を使用しないでください。

TableA のViewModelのは、次のクラスになります。

public class TableAViewModel {

  [Required]
  public int Id { get; set }

  [Required]
  [Display(Name = "TableA Name")]
  [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
  public string Name { get; set; }

  IEnumerable<TableBViewModel> TableBViewModels { get; set; }
}

コントローラーでは、取得したプロパティをクラスごとにデータベースからTableAクラスに移動しますTableAViewModel。ビューからのポストバック時に、これらのプロパティを に戻しますTableA

AutoMapperを使用してそれを行うことができます (オブジェクトとオブジェクトのリストの両方に対して)

ビューモデル内TableAViewModelで、私の例のようにデータ注釈を追加できます(クラスから取得)。使用するのはあなたのクラスです。それらは何によっても自動的に再生成されるわけではなく、ドメイン (データベース) クラスではなく、ビュー内でビュー モデルを使用することをお勧めします。

お役に立てれば。

于 2013-02-23T21:15:15.200 に答える