12 EF Core 私有字段的映射

 1、Fluent API 配置实体对象的私有字段赋值,只有Get没有Set 属性的映射

实体类

public class Blog
{
   private string _url;
   public int BlogId { get; set; }
   public string Url
   {
     get { return _url; }
   }
}

配置

modelBuilder.Entity<Blog>().Property(b => b.Url)
.HasField("_url")//设置EF Core 读取Url列值时,赋值给_url
//可配置访问模式  PropertyAccessMode.Field:直接访问私有字段返回值_url; PropertyAccessMode.Property:通过Url属性访问值  PropertyAccessMode.FieldDuringConstruction:优先使用属性访问
.UsePropertyAccessMode(PropertyAccessMode.Field);

 

2、隐藏属性的配置

模型

    public class Blog
    {
        
        private string _url;  //没有属性访问器

        public int BlogId { get; set; }

        public List<Post> Posts { get;  set; }

    }

Fluent API 配置

modelBuilder.Entity<Blog>().Property<string>("Url").HasField("_url").UsePropertyAccessMode(PropertyAccessMode.Field);

访问方式

var blogs = db.blogs.OrderBy(b => EF.Property<string>(b, "Url"));

 

posted @ 2020-02-20 11:02  前线码农  阅读(999)  评论(0编辑  收藏  举报