Entity Framework 私有属性映射
时间:2022-07-24
本文章向大家介绍Entity Framework 私有属性映射,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
这篇文章纯属自娱自乐,因为在实际开发中用到私有化属性映射的可能性几乎为0。在EF中默认映射的是具有 public 修饰符的属性,但是如果是 internal 、 private 和 protected 修饰的属性要映射进数据库怎么做呢?下面我们分别来讲解一下。
零、 internal 属性映射
我们先创建代码实体类代码
{
public int Id { get; set; }
public string Name { get; set; }
internal int Age { get; set; }
}
在上面的实体类代码中,我们看到 Age 属性的修饰符是 internal , EF是不会映射 Age 属性的,如果需要EF映射该属性就必须显示指定映射该属性。代码如下:
public class UserMap : EntityTypeConfiguration<User>
{
public UserMap()
{
ToTable("User");
HasKey(p => p.Id);
Property(p => p.Age);
}
}
上面的代码中 Property(p => p.Age);
就是显示指定Age属性映射,如果去掉该行代码,EF将不会将 Age 属性映射进数据库。
一、 private 和 protected 属性映射
要让 private 和 protected 属性映射,需要用到部分类。我们将前面的实体类修改一下:
public partial class User
{
public int Id { get; set; }
public string Name { get; set; }
private int Age { get; set; }
}
上面的代码在类上面添加了 partial 关键字(这个关键字就是部分类关键字),并且我们将 Age 属性的修饰符修改为 private,下面我们就来看看如何映射 Age 属性。
- 首先我们定义一个User的部分类:
public partial class User
{
public class PrivatePropertyExtension
{
public static readonly Expression<Func<User, int>> expression =
p => p.Age;
}
}
- 然后再UserMap 类中添加如下代码:
Property(User.PrivatePropertyExtension.expression);
代码完成后,Age 属性将会被映射。protected属性同理。当然,上面第二部的方法我们也可以使用 EF的API 去实现,我们需要在上下文派生类中的 OnModelCreating 中设置将所有非公有属性映射到数据库:
modelBuilder.Types().Configure(p =>
{
var noPublic = p.ClrType.GetProperties(BindingFlags.NonPublic | BindingFlags.Instance);
foreach(var d in noPublic)
{
p.Property(d).HasColumnName(d.Name);
}
});
- win10的80端口被system占用的问题
- 【Spring开发】—— AOP之方法级拦截
- eclipse tomcat下网页修改不生效
- 【插件开发】—— 14 Site is incorrect!编辑器启动报错!
- Java魔法堂:Date与日期时间格式化
- Java魔法堂:打包知识点之META-INF/MAINFEST.MF
- WordPress快速建站
- 大数据时代下的生活
- 【Spring实战】—— 1 入门讲解
- 博客园小技巧
- JS魔法堂:关于元素位置和鼠标位置的属性
- MyBatis魔法堂:Insert操作详解(返回主键、批量插入)
- Winodws安装系统时,通过安装磁盘进行分区
- Eclipse安装SVN插件
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法