• 如何避免在EF自动生成的model中的DataAnnotation被覆盖掉


    网上很多有介绍这个方法的,对于生成的model中的单个类.cs来说,我们自建的类要怎么建呢?

    1

    ProOrder.cs   这个类来说:

    这个是Models文件夹下ModelValde文件夹下:

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Web;
     5 using System.ComponentModel.DataAnnotations;
     6 
     7 namespace JBLPro.Mvc.Models
     8 {
     9     [MetadataType(typeof(ProOrderMetaData))]
    10     public partial class ProOrder
    11     {
    12     }
    13     public partial class ProOrderMetaData
    14     {
    15         [Key]
    16         [Display(Name = "主键ID")]
    17         public int ProOrder_PID { get; set; }
    18         [Display(Name = "创建时间")]
    19         [Required(ErrorMessage = "必填项")]
    20         [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}")]
    21         public System.DateTime CreateDate { get; set; }
    22         [Display(Name = "是否转入证2323123123明生效")]
    23         public Nullable<int> TurnBuy { get; set; }
    24         [Display(Name = "转入产品ID")]
    25         public Nullable<int> FromProID { get; set; }
    26         [Display(Name = "购买产品名称")]
    27         public int Proid { get; set; }
    28 
    29         [Display(Name = "开始时间")]
    30         [Required(ErrorMessage = "必填项")]
    31         [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}")]
    32         public System.DateTime DateStart { get; set; }
    33         [Display(Name = "截止时间")]
    34         [Required(ErrorMessage = "必填项")]
    35         [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}")]
    36         public System.DateTime DateOver { get; set; }
    37 
    38         [Display(Name = "产品份额")]
    39         [Required(ErrorMessage = "必填项")]
    40         public string ProShare { get; set; }
    41 
    42         [Display(Name = "用户名")]
    43         [Required(ErrorMessage = "必填项")]
    44         public string Userid { get; set; }
    45 
    46         [Display(Name = "归属")]
    47         public string CustomerVested { get; set; }
    48 
    49         [Display(Name = "固定收益率")]
    50         [Required(ErrorMessage = "必填项")]
    51         public string ProFixed { get; set; }
    52         [Display(Name = "购买时净值")]
    53         [Required(ErrorMessage = "必填项")]
    54         public string ValueStart { get; set; }
    55 
    56     }
    57 }
    View Code

    下面是ef生成的,Models文件夹下的JBLProData.edmx中的:

     1 //------------------------------------------------------------------------------
     2 // <auto-generated>
     3 //    此代码是根据模板生成的。
     4 //
     5 //    手动更改此文件可能会导致应用程序中发生异常行为。
     6 //    如果重新生成代码,则将覆盖对此文件的手动更改。
     7 // </auto-generated>
     8 //------------------------------------------------------------------------------
     9 
    10 namespace JBLPro.Mvc.Models
    11 {
    12     using System;
    13     using System.Collections.Generic;
    14     
    15     public partial class ProOrder
    16     {
    17         public int ProOrder_PID { get; set; }
    18         public System.DateTime CreateDate { get; set; }
    19         public Nullable<int> TurnBuy { get; set; }
    20         public Nullable<int> FromProID { get; set; }
    21         public int Proid { get; set; }
    22         public System.DateTime DateStart { get; set; }
    23         public System.DateTime DateOver { get; set; }
    24         public string ProShare { get; set; }
    25         public string Userid { get; set; }
    26         public string CustomerVested { get; set; }
    27         public string ProFixed { get; set; }
    28         public string ValueStart { get; set; }
    29         public string ValueEnd { get; set; }
    30         public string CustomerProfitType { get; set; }
    31         public Nullable<decimal> CustomerProfixed { get; set; }
    32         public Nullable<decimal> CustomerProfloat { get; set; }
    33     }
    34 }
    View Code

    很多都是表述的不清楚,这里想说明的是我们自建的.cs要放在一个不能和JBLProData.edmx一个文件夹下,因为这样会重名,会提醒要不要覆盖掉

    所以不能在Models中建同名类!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    放在其他文件夹可以同名,如果想要放在Models中,那就建一个不同名的.cs类

    这个ProOrderVidate.cs类和上面Models/ModelValde/ProOrder.cs类中的内容是一样的。

    这里没有讲怎样类中的东西,但是想说明这个类似继承的类只要保证命名空间一样,和下面MetadataType(指定要与数据模型类关联的元数据类)设置对了,

    放在那里都是可以的(理论)

    1 [MetadataType(typeof(ProOrderMetaData))]
    2 public partial class ProOrder
    3 {
    4 }
    5 public partial class ProOrderMetaData
    6 {
    7 ............................
    8 
    9 }
    View Code
  • 相关阅读:
    MySQL5.6.26升级到MySQL5.7.9实战方案【转】
    bootstrap-markdown编辑器引入
    yii获取当前url和域名
    RabbitMQ消息队列在PHP下的应用
    解决 PHPExcel 长数字串显示为科学计数
    Linux实现https方式访问站点
    layui关闭弹出层
    vscode中iframe的使用
    tomcat运行超时问题解决
    Linux安装solr
  • 原文地址:https://www.cnblogs.com/myloveblogs/p/5310079.html
Copyright © 2020-2023  润新知