C# 如何正确使用asp.net mvc数据库模型?

C# 如何正确使用asp.net mvc数据库模型?,c#,asp.net-mvc,entity-framework,model,C#,Asp.net Mvc,Entity Framework,Model,我的问题是模型应该如何使用?我认为我没有正确地使用它们。每当我对数据库(在本例中为用户表)进行更改并重建模型时,我的更改都会被删除,最终我会再次进行更改。所做的更改是添加属性和另一列(ConfirmPassword) 编辑:我正在使用EF5 这是由数据库创建的模型: using System; using System.Collections.Generic; public partial class User { public User() { this.Do

我的问题是模型应该如何使用?我认为我没有正确地使用它们。每当我对数据库(在本例中为用户表)进行更改并重建模型时,我的更改都会被删除,最终我会再次进行更改。所做的更改是添加属性和另一列(
ConfirmPassword

编辑:我正在使用EF5

这是由数据库创建的模型:

using System;
using System.Collections.Generic;

public partial class User
{
    public User()
    {
        this.Documents = new HashSet<Document>();
    }

    public int UserId { get; set; }
    public string Username { get; set; }
    public string Email { get; set; }
    public string Password { get; set; }
    public string Grade { get; set; }
}
使用系统;
使用System.Collections.Generic;
公共部分类用户
{
公共用户()
{
this.Documents=new HashSet();
}
public int UserId{get;set;}
公共字符串用户名{get;set;}
公共字符串电子邮件{get;set;}
公共字符串密码{get;set;}
公共字符串等级{get;set;}
}
与我的变化:

using System;
using System.Collections.Generic;
using CompareObsolete = System.Web.Mvc.CompareAttribute;

public partial class User
{
    public User()
    {
        this.Documents = new HashSet<Document>();
    }

    [Key]
    public int UserId { get; set; }

    [Required]
    [StringLength(15, MinimumLength = 3)]
    [Display(Name = "Username*: ")]
    public string Username { get; set; }

    [Required]
    [EmailAddress]
    [StringLength(25)]
    [Display(Name = "Email Address*: ")]
    public string Email { get; set; }

    [Required]
    [DataType(DataType.Password)]
    [StringLength(50, MinimumLength = 4)]
    [Display(Name = "Password*: ")]
    public string Password { get; set; }

    [DataType(DataType.Password)]
    [Display(Name = "Confirm Password*: ")]
    [CompareObsolete("Password", ErrorMessage = "The password and confirmation password do not match.")]
    public string ConfirmPassword { get; set; }

    [Required]
    [Display(Name = "Your Grade*: ")]
    public string Grade { get; set; }
}
使用系统;
使用System.Collections.Generic;
使用CompareObsolete=System.Web.Mvc.CompareAttribute;
公共部分类用户
{
公共用户()
{
this.Documents=new HashSet();
}
[关键]
public int UserId{get;set;}
[必需]
[StringLength(15,最小长度=3)]
[显示(Name=“Username*:”)]
公共字符串用户名{get;set;}
[必需]
[电邮地址]
[第25段]
[显示(Name=“电子邮件地址*:”)]
公共字符串电子邮件{get;set;}
[必需]
[数据类型(数据类型.密码)]
[StringLength(50,最小长度=4)]
[显示(Name=“Password*:”)]
公共字符串密码{get;set;}
[数据类型(数据类型.密码)]
[显示(Name=“确认密码*:”)]
[CompareObsolete(“密码”,ErrorMessage=“密码和确认密码不匹配。”)]
公共字符串ConfirmPassword{get;set;}
[必需]
[显示(Name=“你的成绩*:”)]
公共字符串等级{get;set;}
}

1。创建
UserMetaData
Class

    public class UserMetaData
    {
      [Key]
      public int UserId { get; set; }

      [Required]
      [StringLength(15, MinimumLength = 3)]
      [Display(Name = "Username*: ")]
      public string Username { get; set; }

      [Required]
      [EmailAddress]
      [StringLength(25)]
      [Display(Name = "Email Address*: ")]
      public string Email { get; set; }

      [Required]
      [DataType(DataType.Password)]
      [StringLength(50, MinimumLength = 4)]
      [Display(Name = "Password*: ")]
      public string Password { get; set; }

      [DataType(DataType.Password)]
      [Display(Name = "Confirm Password*: ")]
      [CompareObsolete("Password", ErrorMessage = "The password and confirmation password do not match.")]
      public string ConfirmPassword { get; set; }

      [Required]
      [Display(Name = "Your Grade*: ")]
      public string Grade { get; set; }
    }
2。在new.cs文件中创建new partial类,并使用
MetadataType
属性将元数据类分配给该类

    [MetadataType(typeof(UserMetaData))] // assign type of your metadata here.
    public partial class User
    {

    }

您正在使用实体框架吗?如果是,哪个版本?创建一个单独的视图模型()。诸如
ConfirmPassword
之类的属性不属于您的数据模型。