0

我用“ADO.NET Entity Data Model”创建我的模型类,所以如果我改变我的数据库,我的模型类就会改变..

我的第一堂课来自“ADO.NET 实体数据模型”;

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 Entity Data Model”;

    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 Entity Data Model”;

    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; }
}

在控制器中,您将按类将检索到的属性从数据库移动TableATableAViewModel类中。在从视图回发时,您会将这些属性移回TableA.

您可以使用AutoMapper来执行此操作(对于对象和对象列表)

在您的视图模型TableAViewModel中,您可以像我的示例中那样添加数据注释(取自您的课程)。它是您要使用的类,它们不会被任何东西自动重新生成,并且在您的视图中使用视图模型而不是域(数据库)类是一种很好的做法。

希望这可以帮助。

于 2013-02-23T21:15:15.200 回答