原文链接:http://www.entityframeworktutorial.net/code-first/notmapped-dataannotations-attribute-in-code-first.aspx

EF 6 Code-First系列文章目录:

当我们不想实体类中的某个或者某些属性,不要映射成数据库中的列的时候。可以使用NotMapped特性,标识NotMapped特性在属性上面就行了。默认情况下,EF为实体的每个属性映射数据列。【必须包含get;和set;】。NotMapped特性重写了这个约定。

NotMapped Attribute: [NotMapped()]

在上面的例子中,NotMapped特性应用在Student实体的Age属性上了,所以EF将不会在Students表中包含Age列:

需要注意的是:EF不会为没有get;和set;的属性,创建列。例如下面实体中的City和Age属性,都不会映射在数据库表的列中:

我们自己动手验证一下:

1.创建一个控制台应用程序EFAnnotationNotMapped,并安装EF

2.创建一个Student类

  1. public class Student
  2. {
         [Key]
  3. public int Key { get; set; }
  4.  
  5. public string Name { get; set; }
  6.  
  7. [NotMapped]
  8. public string Sex { get; set; }
  9.  
  10. public int Age { get; set; }
  11. }

3.上下文类:

  1. public class EFDbContext:DbContext
  2. {
  3. public EFDbContext() : base("name=Constr")
  4. {
  5. Database.SetInitializer<EFDbContext>(new DropCreateDatabaseAlways<EFDbContext>());
  6. }
  7.  
  8. public DbSet<Student> Students { get; set; }
  9. }

4.配置文件:

  1. <connectionStrings>
  2. <add name="Constr" connectionString="server=.;database=EFAnnotationNotMappedDB;uid=sa;pwd=Password_1" providerName="System.Data.SqlClient"/>
  3. </connectionStrings>

5.测试代码:

6.运行程序:

看看生成的数据库:

可以看到标注了NotMapped的Sex属性没有映射到数据表的列中。

来看看没有get和set的属性的情况:修改Student实体

  1. public class Student
  2. {
  3. private string _myschool;
  4.  
  5. private string _myHobby;
  6.  
  7. [Key]
  8. public int Key { get; set; }
  9.  
  10. public string Name { get; set; }
  11.  
  12. [NotMapped]
  13. public string Sex { get; set; }
  14.  
  15. public int Age { get; set; }
  16.  
  17. public string MySchool { get { return _myschool; } }
  18.  
  19. public string MyHobby { set { _myHobby = value; } }
  20. }

运行程序:

看看数据库:可以看到MySchool和MyHobby没有映射为数据列。

再看看private属性的情况,添加一个private属性Address

  1. public class Student
  2. {
  3. private string _myschool;
  4.  
  5. private string _myHobby;
  6.  
  7. [Key]
  8. public int Key { get; set; }
  9.  
  10. public string Name { get; set; }
  11.  
  12. [NotMapped]
  13. public string Sex { get; set; }
  14.  
  15. public int Age { get; set; }
  16.  
  17. public string MySchool { get { return _myschool; } }
  18.  
  19. public string MyHobby { set { _myHobby = value; } }
  20.  
  21. private string Address { get; set; }
  22. }

运行程序:

看看数据库:可以看到Private属性也不能映射到数据列。

总结:

1. NotMapped特性标识的属性列,不会映射到数据库

2.没有get;set;的属性不能映射到数据库;

3.private属性也不能映射到数据库;

好了,大家有什么不明白的可以留言,我会一一回复,谢谢大家支持!

9.4 翻译系列:EF 6以及 EF Core中的NotMapped特性(EF 6 Code-First系列)的更多相关文章

  1. 【SignalR全套系列】之在.Net Core 中实现SignalR实时通信

    ​ 微信公众号:趣编程ACE 关注可了解更多的.NET日常实战开发技巧,如需源码 请公众号后台留言 源码 [如果觉得本公众号对您有帮助,欢迎关注] 前文回顾 [SignalR全套系列]之在.NetCo ...

  2. 项目开发中的一些注意事项以及技巧总结 基于Repository模式设计项目架构—你可以参考的项目架构设计 Asp.Net Core中使用RSA加密 EF Core中的多对多映射如何实现? asp.net core下的如何给网站做安全设置 获取服务端https证书 Js异常捕获

    项目开发中的一些注意事项以及技巧总结   1.jquery采用ajax向后端请求时,MVC框架并不能返回View的数据,也就是一般我们使用View().PartialView()等,只能返回json以 ...

  3. 探索ASP.Net Core 3.0系列六:ASP.NET Core 3.0新特性启动信息中的结构化日志

    前言:在本文中,我将聊聊在ASP.NET Core 3.0中细小的变化——启动时记录消息的方式进行小的更改. 现在,ASP.NET Core不再将消息直接记录到控制台,而是正确使用了logging 基 ...

  4. .net core系列之《在.net core中使用MemoryCache实现本地缓存》

    说到内存缓存MemoryCache不由的让我想起.Net Framework中的MemoryCache,它位于 System.Runtime.Caching 程序集中. 接下来我们来看看.net co ...

  5. Net core学习系列(三)——Net Core中的依赖注入

    本文通过一个维修工与工具库的例子形象的描述一下为什么要用依赖注入.它的工作原理是什么样的, 然后根据这个类比一下ASP.NET Core 中的依赖注入, 从而深刻了解它的使用方法.注意事项以及回收机制 ...

  6. dart系列之:安全看我,dart中的安全特性null safety

    目录 简介 Non-nullable类型 Nullable List Of Strings 和 List Of Nullable Strings !操作符 late关键字 总结 简介 在Dart 2. ...

  7. 16.翻译系列:EF 6 Code -First中使用存储过程【EF 6 Code-First系列】

    原文链接:https://www.entityframeworktutorial.net/entityframework6/code-first-insert-update-delete-stored ...

  8. 9.2 翻译系列:数据注解特性之---Column【EF 6 Code First系列】

    原文链接:http://www.entityframeworktutorial.net/code-first/column-dataannotations-attribute-in-code-firs ...

  9. 1 翻译系列:什么是Code First(EF 6 Code First 系列)

    原文链接:http://www.entityframeworktutorial.net/code-first/what-is-code-first.aspx EF 6 Code-First系列文章目录 ...

随机推荐

  1. win10下安装scala

    win10安装scala详细步骤 1.下载安装JDK 2.配置Java环境变量 JAVA_HOME:jdk的安装目录 Path:%JAVA_HOME%\bin; Classpath:%JAVA_HOM ...

  2. html5 选择多张图片在页面内预览并上传到后台

    版权声明:本文为博主原创文章,未经博主允许不得转载. http://blog.csdn.net/huangxin112/article/details/74956462 需求:点击选择图片(可选多张) ...

  3. 009.Docker Compose部署及基础使用

    一 Docker Compose概述 Compose是一个用于定义和运行多容器Docker应用程序的工具.使用Compose,您可以使用YAML文件来配置应用程序的服务.然后,使用单个命令,您可以从配 ...

  4. spring整合ssmXML版

    以下是一个简单的ssm项目:如果中途报错,肯定是tomcat配置或者数据库配置有问题,在程序中注意将包名等配置换成自己的.数据库表需要提前建好,并加入数据,注意表结构要和实体对象对应. 1.开发条件: ...

  5. DB安装

    start from the execute file : DB2_ESE_10_Win_x86-64\setup.exe Navigator to "Install a Product&q ...

  6. C# DataTable分页函数

    /// <summary> /// 对DataTable进行分页,起始页为1 /// </summary> /// <param name="dt"& ...

  7. 深度学习中 droupout层是咋回事??

    参考这篇博文 博主写的非常好!   https://blog.csdn.net/program_developer/article/details/80737724 参考这篇博文 博主写的非常好!  ...

  8. 潭州课堂25班:Ph201805201 爬虫基础 第十四课 js破解 (课堂笔记)

    打断点 找要的数据 鼠标的点击事件 新浪微博登录 表单提交分析 : 先佃输入错误密码开始调式 f10 往下走, f11 进入函数 sh + f11 跳出函数 # -*- coding: utf-8 - ...

  9. 潭州课堂25班:Ph201805201 爬虫基础 第十一课 点触验证码 (课堂笔记)

    打开 网易盾 http://dun.163.com/trial/picture-click  ——在线体验——图中点选 打码平台 ——超级鹰    http://www.chaojiying.com/ ...

  10. 安装 Keepalived

    安装环境 [root@node1 ~]# cat /etc/redhat-release CentOS Linux release (Core) [root@node1 ~]# cat /proc/v ...