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

数据标注概论 这两天后台有好多小伙伴说想学习数据标注,所以就想写一个系列的文章,来系统的介绍一下数据标注这个事儿,方便大家对数据标注有一个全面的了解。不管是你是想做数据标注工作,还是转行组建公司来做数据标注,都需要对数据标注本身有一个全面的了解。 一.数据标注的起源与发展 由于数据标注与人工智能相伴相生,在研究数据标注的同时,首先需要对人工智能有所了解。人工智能的概念是最早由约翰麦卡锡于1956年在... 阅读详情

相信很多人刚接触EF+MVC的时候,会有这个疑问,就是当我们在model类中加验证信息的时候,会在重新生成model的时候被重写掉。这里介绍一个方法:

比如我有个Employee类是从数据库中生成到model中的,我们可以在Models文件夹中创建一个部分类名称与Employee类同名(注意:该类的命名空间必须与自动生成的类属于同一个命名空间),类内容为空的就可以,然后在新建的部分类下方再创建一个类(EmployeeMetaData),类中中加上我们需要验证的列与验证信息,然后需要将

[MetadataType(typeof(EmployeeMetaData))]加在新建的Employee类名上方

这时我们在view页面中不用更改代码。这样当我们重新生成model的时候,我们自己定义的部分类Employee就不会受影响了。

下面是样例代码:

从数据库中生成的Employee:

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated from a template.
//
//     Manual changes to this file may cause unexpected behavior in your application.
//     Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace ValidationDemo
{
    using System;
    using System.Collections.Generic;
    
    public partial class Employee
    {
        public Employee()
        {
            this.Employees1 = new HashSet<Employee>();
            this.Orders = new HashSet<Order>();
            this.Territories = new HashSet<Territory>();
        }
    
        public int EmployeeID { get; set; }
        public string LastName { get; set; }
        public string FirstName { get; set; }
        public string Title { get; set; }
        public string TitleOfCourtesy { get; set; }
        public Nullable<System.DateTime> BirthDate { get; set; }
        public Nullable<System.DateTime> HireDate { get; set; }
        public string Address { get; set; }
        public string City { get; set; }
        public string Region { get; set; }
        public string PostalCode { get; set; }
        public string Country { get; set; }
        public string HomePhone { get; set; }
        public string Extension { get; set; }
        public byte[] Photo { get; set; }
        public string Notes { get; set; }
        public Nullable<int> ReportsTo { get; set; }
        public string PhotoPath { get; set; }
        public Nullable<int> COL1 { get; set; }
    
        public virtual ICollection<Employee> Employees1 { get; set; }
        public virtual Employee Employee1 { get; set; }
        public virtual ICollection<Order> Orders { get; set; }
        public virtual ICollection<Territory> Territories { get; set; }
    }
}

创建一个部分类,命名为Employee:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;

namespace ValidationDemo
{
    [MetadataType(typeof(EmployeeMetaData))]
    public partial class Employee
    {
    }
    public partial class EmployeeMetaData
    {
        public int EmployeeID { get; set; }
        [Required]
        public string LastName { get; set; }
        public string FirstName { get; set; }
        public string Title { get; set; }
        public string TitleOfCourtesy { get; set; }
        public Nullable<System.DateTime> BirthDate { get; set; }
        public Nullable<System.DateTime> HireDate { get; set; }
        public string Address { get; set; }
        public string City { get; set; }
        public string Region { get; set; }
        public string PostalCode { get; set; }
        public string Country { get; set; }
        public string HomePhone { get; set; }
        public string Extension { get; set; }
        public byte[] Photo { get; set; }
        public string Notes { get; set; }
        public Nullable<int> ReportsTo { get; set; }
        public string PhotoPath { get; set; }
        public Nullable<int> COL1 { get; set; }
    }
}

参考文档:
http://www.asp.net/mvc/tutorials/older-versions/models-(data)/validation-with-the-data-annotation-validators-cs

OK,大功告成。



EFModelFrist EFModelFrist EFModelFrist EFModelFrist EFModelFrist 立即下载

相关推荐

告别裸机思维:在STM32F407上玩转LwIP,让你的设备轻松接入TCP网络

本文详细介绍了如何在STM32F407微控制器上使用LwIP协议栈实现TCP网络连接,从裸机编程到网络化的架构革命。通过事件驱动模型、内存优化配置和工业级稳定性实现,帮助开发者高效构建稳定TCP连接,适用于物联网设备联网等场景。

weixin_33725515的博客 562

使用 DataAnnotations(数据注解)实现通用模型数据校验

.net 跨平台参数校验的意义在实际项目开发中,无论任何方式、任何规模的开发模式,项目中都离不开对接入数据模型参数的合法性校验,目前普片的开发模式基本是前后端分离,当用户在前端页面中输入一些表单数据时,点击提交按钮,触发请求目标服务器的一系列后续操作,在这中间的执行过程中(标准做法推荐)无论是前端代码部分,还是服务端代码部分都应该有针对用户输入数据的合法性校验,典型做法如下:前端部分:当用户在页面...

dotNET跨平台 1400

统信UOS V20 安装mysql5.7.42详细教程

到bin/下,执行下面的命令,初始化mysql服务信息,得到数据库的初始密码,实际如果目录不一样记得换成自己的目录。下载后通过远程将安装包上传至服务器,我这里将安装包上传至/usr/local/mysql 下。ps:这时候如果还是不能远程访问的话,可能是防火墙的原因,命令行执行以下命令即可。再次登录,发现缺少 libtinfo.so.5文件,再次建立软连接。登录,发现报错,提示缺少libncurses.so.5文件,使用。创建 /var/lib/ 下mysql目录。登录成功,修改密码,设置远程访问。

为谁伫立在风中 1万+

怎样避免在EF自己主动生成的model中的DataAnnotation被覆盖掉

相信非常多人刚接触EF+MVC的时候,会有这个疑问。就是当我们在model类中加验证信息的时候,会在又一次生成model的时候被重写掉。这里介绍一个方法: 比方我有个Employee类是从数据库中生成到model中的。我们能够在Models目录中创建一个部分类名称与Employee类同名(注意:该类的命名空...

weixin_30399055的博客 137

BGE-Reranker-v2-M3介绍

重排序模型介绍

吉米_王 5896

rk3568 rockit编译测试

编译rockit不能使用SDK默认编译kernel的交叉编译,需要采用编译buildroot的,而编译buildroot的编译器SDK并没有存放,需要编译过buildroot之后才可以用。命令参数相关解析可查阅代码,这里提醒一下-l参数,这是程序运行计数,默认是100,时间很短,基本上显示画面一闪而过,一度以为是程序哪里出问题了,改用-l 1000,画面显示时间加长。此处跳过系统,单领出来编译。rockit组件包在4.10版本需要手动编译,奈何我的版本怎么都编译不了,后来改用5.10版本才编译通过。

zfenggo的博客 4198

DataAnnotation特性列举

DataAnnotation 特性由.NET 3.5中引进,给.NET中的类提供了一种添加验证的方式。DataAnnotation由命名空间System.ComponentModel.DataAnnotations提供。下面列举实体模型中常用的DataAnnotation特性: KeyAttribute:对数据库中表的主键的设置[Key]public int OrderID { get;...

LJianDong的博客 1470

2.数字芯片时序正确的前提—Max-transition

芯片物理设计中最基本的Max-transition检查

weixin_43868998的博客 5426

探索 Awesome Data Annotation:高效数据标注的宝藏库

探索 Awesome Data Annotation:高效数据标注的宝藏库 在人工智能和机器学习领域,高质量的数据是训练模型的基础,而数据标注则是打造这些数据的关键步骤。 是一个精心整理的资源列表,它汇总了各种工具、平台和服务,旨在帮助开发者和研究人员更轻松地进行数据标注工作。本文将深入探讨该项目的内容,技术分析其价值,并展示如何利用这些资源优化你的AI项目。 项目简介 Awesome Data ...

gitblog_00039的博客 722

WiseFlow本地搭建实录---保姆教程

本文介绍了如何从0开始搭建wiseflow的个人情报官的方法,目前所有的API全部都是免费的,对机器没有要求,大家可以放心搭建

liuhui244的博客 1962

JavaScript China城市联动

中国全城市的地址省,市,县 <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title></title> <script src="jquery.js"></script> <script src="json.js"></...

唯唯同学 2241

EF DataBase First生成model的验证

如何避免在EF自动生成的model中的DataAnnotation被覆盖掉 相信很多人刚接触EF+MVC的时候,DataBase First模式生成model类中加验证信息的时候,会在重新生成model的时候被重写掉。这里介绍一个方法:比如我有个Book类是从数据库中生成到model中的,我们可以在Models文件夹中创建一个局部类名称与Book类同名(注意:该类的命名空间必须与自动生...

weixin_30617561的博客 147

TP-LINK电信定制摄像头刷机教程:解锁官方功能与固件升级

固件是嵌入式设备的操作系统,控制着硬件的基础功能。其工作原理是通过更新或替换存储在设备非易失性存储器中的程序代码,从而改变设备的行为和功能。这项技术的核心价值在于赋予用户对设备的完全控制权,能够解除厂商或运营商的软件限制,实现功能自定义、性能优化和安全更新。在智能家居、网络设备和物联网领域,固件升级与刷机是常见的工程实践,用于修复漏洞、增加新特性或适配不同平台。本文聚焦于利用TFTP恢复模式这一通用网络设备维护机制,针对TP-LINK电信定制版摄像头,提供一套完整的刷机方案,将设备刷入官方通用版固件,以解除

weixin_34205826的博客 498

使用分部类给Models添加验证Attributes

网摘1: 在使用Entity Framework 的Database frist或model first时,直接加attribute到modle类上是太现实也不合理的,因为model类是自动生成的,重新生成后会覆盖自己的修改。一个比较合理做法,就是用partial class的方式来实现。 比如有一个Model类: Movie。那我们就可以添加一个局部类文件,局部类的内容如下: 1 ...

weixin_30695195的博客 95

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ASP.NET开发心得

默认的表名是Entity类名的复数形式。set;set;set;set;

tlxamulet的博客 497

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

使用 DataAnnotations(数据注解)实现模型的通用数据校验

在实际项目开发中,无论任何方式、任何规模的开发模式,项目中都离不开对接入数据模型参数的合法性校验,目前普片的开发模式基本是前后端分离,当用户在前端页面中输入一些表单数据时,点击提交按钮,触发请求目标服务器的一系列后续操作,在这中间的执行过程中(标准做法推荐)无论是前端代码部分,还是服务端代码部分都应该有针对用户输入数据的合法性校验,典型做法如下:

ChaITSimpleLove的博客 2085

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

.net core web api 数据验证(DataAnnotations)

.net core web api 数据验证(DataAnnotations)

cangqiongxiaoye的博客 651

EntityFramework Code-First 简易教程(六)-------领域类配置之DataAnnotations

EF Code-First提供了一个可以用在领域类或其属性上的DataAnnotation特性集合,DataAnnotation特性会覆盖默认的EF约定。 DataAnnotation存在于两个命名空间里: System.ComponentModel.DataAnnotations和System.ComponentModel.DataAnnotations.Schema 注意:DataAn...

weixin_30446197的博客 261

EF Code First:实体映射,数据迁移,重构

经过EF的《第一篇》,我们已经把数据访问层基本搭建起来了,但并没有涉及实体关系。实体关系对于一个数据库系统来说至关重要,而且EF的各个实体之间的联系,实体之间的协作,联合查询等也都依赖于这些实体关系。 一、前言 经过EF的《第一篇》,我们已经把数据访问层基本搭建起来了,但并没有涉及实体关系。实体关系对于一个数据库系统来说至关重要,而且EF的各个实体之

zjlovety的专栏 5975

数据注释(Data Annotations)是一种在数据库表、列等结构化数据单元上附加业务语义元数据的技术实践

✅ 数据库级注释(如 PostgreSQL 的 `COMMENT ON COLUMN`、SQL Server 的 `sp_addextendedproperty`); ✅ 元数据管理平台(如 Atlan、Collibra、Apache Atlas)中维护结构化业务标签与描述; ✅ 代码/配置即文档(如 dbt 模型 YAML 文件中的 `description`、`tags`、`meta` 字段); ✅ 基于 OpenAPI 或 Data Contract 标准的机器可读注释规范。

[Blog][Domain] programb.blog.youkuaiyun.com 121

Data Validate 之 Data Annotation

什么是Data Annotation ? 如何使用 ? 自定义Validate Attribute EF Db first中使用Data Annotation asp.net MVC中使用Data Annotation 什么是Data Annotation ? 貌似没听过,但肯定见过 所属程序集:System.ComponentModel.DataAnnotati...

258
上一篇: 使用Attach和Detach来实现更新的时候避免逐一赋值的麻烦
下一篇: 动态构建LINQ(Dynamic String based Queries in LINQ - Dynamic Expression API)
mx5721
博客等级 码龄17年 24粉丝 104原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值