如何在MVC中为一个DB表定义两个类

时间:2015-12-06 09:43:43

标签: asp.net-mvc asp.net-mvc-4

我有一个表np_user_dtls,在sql server

中有4个字段
user_name
user_last_name
arabic_name
nationality

在mvc中,我创建了一个模型类,如下所示

 public partial class np_user_dtls
    {


        [Display(Name = "First Name*")]
        [Required(ErrorMessage = "First name is required.")]
        public string user_name { get; set; }


        [Required(ErrorMessage = "last name is required.")]
        public string user_last_name { get; set; }

        [Required(ErrorMessage = "arabic name is required.")]
        public string arabic_name { get; set; }

       [Required(ErrorMessage = "nationality is required.")]
        public string nationality { get; set; }
   }

在上下文模型中,我定义了模型类和db表之间的关系,如下所示

public System.Data.Entity.DbSet<****.Models.np_user_dtls> np_user__dtls { get; set; }

现在我需要另一个阿拉伯语名称不是强制性的类

所以我创建了一个如下所示的模型

 public partial class np_user_dtls_1
        {


            [Display(Name = "First Name*")]
            [Required(ErrorMessage = "First name is required.")]
            public string user_name { get; set; }


            [Required(ErrorMessage = "last name is required.")]
            public string user_last_name { get; set; }


           [Required(ErrorMessage = "nationality is required.")]
            public string nationality { get; set; }
       }

但是当我在db上下文中为此创建一个条目时,如下所示

   public System.Data.Entity.DbSet<****.Models.np_user_dtls_1> np_user__dtls { get; set; }

它给我一个错误

  

类型****。模型。*****已经包含了一个定义   np_user__dtls

是不是可以为单个表定义多个模型?

1 个答案:

答案 0 :(得分:2)

您可以为一个表设置一个实体模型。然后,您可以将不同的视图模型与实体模型绑定。 实体类。

public partial class np_user_dtls
{

    public string user_name { get; set; }
    public string user_last_name { get; set; }
    public string arabic_name { get; set; }
    public string nationality { get; set; }
}

您可以将此类用于数据库表。

public partial class np_user_dtls_response1
{


    [Display(Name = "First Name*")]
    [Required(ErrorMessage = "First name is required.")]
    public string user_name { get; set; }


    [Required(ErrorMessage = "last name is required.")]
    public string user_last_name { get; set; }

    [Required(ErrorMessage = "arabic name is required.")]
    public string arabic_name { get; set; }

   [Required(ErrorMessage = "nationality is required.")]
    public string nationality { get; set; }
}

您可以将此类用作视图模型。接受此课程的要求。然后映射此类np_user_dtls并将信息保存在db中。

稍后您可以使用其他视图模型类,例如

public partial class np_user_dtls_response2
    {


        [Display(Name = "First Name*")]
        [Required(ErrorMessage = "First name is required.")]
        public string user_name { get; set; }


        [Required(ErrorMessage = "last name is required.")]
        public string user_last_name { get; set; }


       [Required(ErrorMessage = "nationality is required.")]
        public string nationality { get; set; }
   }

再次使用类np_user_dtls绑定此类并将信息保存在db中。在此,您可以在应用程序级别中使用两种验证来保存数据库中的数据。以前您可以设置验证数据库级别。这就是为什么你不能设置两个类