EF Core NotMapped注解怎么用 EF Core忽略属性映射教程

[NotMapped]用于标记不参与数据库映射的属性或类,避免EF Core为其生成列或表;适用于计算属性、临时字段、敏感数据等,既可标注在属性上也可标注在类上,Fluent API中亦可用Ignore替代。

ef core notmapped注解怎么用 ef core忽略属性映射教程

EF Core 的 [NotMapped] 注解用来告诉框架:这个属性不参与数据库映射,不会生成对应列,也不会在查询或保存时读写数据库。它最常用于计算属性、临时字段、前端展示用的组合值,或者纯内存中使用的辅助数据。

什么时候必须加 [NotMapped]?

只要属性不对应数据库中的任何一列,又确实定义在实体类里(比如为了方便前端展示或业务逻辑),就必须标记 [NotMapped],否则 EF Core 会尝试为它建列,导致迁移失败或运行时报错。

只读计算属性(如 public string FullName => FirstName + " " + LastName;) 临时状态字段(如 public bool IsSelected { get; set; },仅用于页面勾选) 敏感但不落库的数据(如 public string TempToken { get; set; }) 与外键同名但非导航用途的普通字段(避免被误判为关联)

怎么写?基础用法很简单

确保引入命名空间:using System.ComponentModel.DataAnnotations.Schema;

然后直接加在属性上:

[NotMapped]public string DisplayCode => $"{GoodsName.Substring(0, 1)}:{Location}";

注意:该属性可以是自动属性、只读属性(只有 get)、或完整属性(get + set),EF Core 都会跳过——前提是加了 [NotMapped]

不加的话,哪怕只有 get,EF Core 也可能因其他配置(如 Fluent API 中未忽略)而报错;加了就明确、安全、无歧义。

类级别也能用 [NotMapped]

如果整个类只是做中间计算或 DTO 用途,不希望它在数据库里有任何表,可以直接标在类上:

[NotMapped]public class CalculationResult{    public string Description { get; set; }    public decimal Value { get; set; }}

这样 EF Core 在构建模型时会完全跳过这个类型,不会为它生成迁移,也不会出现在 DbContextDbSet 中。

替代方案:Fluent API 忽略属性

如果你倾向把映射逻辑集中到 OnModelCreating 里,也可以不用注解:

protected override void OnModelCreating(ModelBuilder modelBuilder){    modelBuilder.Entity()        .Ignore(g => g.GoodsCode);}

这种方式适合团队规范要求“注解只管校验,映射全走 Fluent”,也方便统一管理忽略项。但日常开发中,[NotMapped] 更直观、更易维护。

基本上就这些。用对地方,不漏加,不乱加——EF Core 就不会为你的“假字段”建真列。

以上就是EF Core NotMapped注解怎么用 EF Core忽略属性映射教程的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1443136.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 19:47:15
下一篇 2025年12月16日 07:18:51

相关推荐

发表回复

登录后才能评论
关注微信