原文链接: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类

 public class Student
{
     [Key]
public int Key { get; set; } public string Name { get; set; } [NotMapped]
public string Sex { get; set; } public int Age { get; set; }
}

3.上下文类:

 public class EFDbContext:DbContext
{
public EFDbContext() : base("name=Constr")
{
Database.SetInitializer<EFDbContext>(new DropCreateDatabaseAlways<EFDbContext>());
} public DbSet<Student> Students { get; set; }
}

4.配置文件:

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

5.测试代码:

6.运行程序:

看看生成的数据库:

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

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

public class Student
{
private string _myschool; private string _myHobby; [Key]
public int Key { get; set; } public string Name { get; set; } [NotMapped]
public string Sex { get; set; } public int Age { get; set; } public string MySchool { get { return _myschool; } } public string MyHobby { set { _myHobby = value; } }
}

运行程序:

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

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

public class Student
{
private string _myschool; private string _myHobby; [Key]
public int Key { get; set; } public string Name { get; set; } [NotMapped]
public string Sex { get; set; } public int Age { get; set; } public string MySchool { get { return _myschool; } } public string MyHobby { set { _myHobby = value; } } private string Address { get; set; }
}

运行程序:

看看数据库:可以看到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. day14--前端HTML、CSS

        HTML是一个裸体的人,CSS穿上华丽的衣服,JS动起来.     HTML 1. -一套规则,浏览器识别的规则 2. 开发者: 学习HTML规则 开发后台程序 - 写HTML文件(充当模板的 ...

  2. BZOJ5120 [2017国家集训队测试]无限之环 费用流

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ5120 题意概括 原题挺简略的. 题解 本题好难. 听了任轩笛大佬<国家队神犇>的讲课才 ...

  3. 021 使用join()将数组转变为字符串

    1.定义用用法 join() 方法用于把数组中的所有元素放入一个字符串. 元素是通过指定的分隔符进行分隔的. 语法 arrayObject.join(separator) 返回值 返回一个字符串.该字 ...

  4. 数值分析之Neville's Algorithm

        Neville插值方法详解 牛顿的插值方法涉及两个步骤:计算系数,随后评估多项式. 如果插值运作良好使用相同的多项式在x的不同值处重复执行. 要是一点是内插,一种单步计算插值的方法,如Nevi ...

  5. 认证登录装饰器与form组件的使用

    def auth(func): '''制作登录认证的装饰器''' def inner(request,*args,**kwargs): user_info=request.session.get(se ...

  6. 【11.9校内测试】【倒计时1天】【ak欢乐赛】【多项式计算模拟】

    然而AK失败了,就是因为这道摸你题:(最后一篇题解了吧?QAQ) Solution 模拟多项式乘法,其中的运算处理很像高精度,不过第$i$位代表的就是$x^i$前面的系数了. 好像去年的时候就讲了表达 ...

  7. 20172302 《Java软件结构与数据结构》第二周学习总结

    2018年学习总结博客总目录:第一周 第二周 教材学习内容总结 第三章 集合概述-栈 3.1 集合 (1) 集合是一种聚集,组织了其他对象的对象.它定义一张破那个特定的方式,可以访问.管理所包含的对象 ...

  8. Codeforces 932G Palindrome Partition 回文树+DP

    题意:给定一个串,把串分为偶数段 假设分为$s_1,s_2,s_3....s_k$ 求满足$ s_1=s_k,s_2=s_{ k-1 }... $的方案数模$10^9+7$ $|S|\leq 10^6 ...

  9. html&css 易忽略的知识点

    1.input标签的readonly属性 <input type="text" readonly="readonly"/>

  10. Java项目收藏

    数据库 MyCat:数据库中间件 IM.消息推送 t-io:不仅仅是百万级即时通讯框架 tio-im:基于t-io写的IM,主要目标降低即时通讯门槛,实现多端不同协议间的消息发送如http.webso ...