什么是ef core_vector嵌套vector

什么是ef core_vector嵌套vectorEFcore相比EF6,对于DDD的支持更好。比如私有字段的映射,私有数组多对多的映射等等。 EFcore有几个坑需要注意:1.多对多的关系,因为只支持HasOne和Withmany,不支持HasMany。因此必须手动建立多对多的关系表的entity定义类,samplecode如下:classMyContext:DbContext{    pub…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

EF core相比EF6 , 对于DDD的支持更好。 比如私有字段的映射, 私有数组多对多的映射等等。

 

EF core 有几个坑需要注意:

1.多对多的关系,因为只支持HasOne和Withmany, 不支持HasMany。 因此必须手动建立多对多的关系表的entity定义类, sample code如下:

class MyContext : DbContext

{

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

    public DbSet<Tag> Tags { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)

    {

       //start{把多对多关系表用fluent api实现关联

        modelBuilder.Entity<PostTag>()

            .HasKey(t => new { t.PostId, t.TagId });

        modelBuilder.Entity<PostTag>()

            .HasOne(pt => pt.Post)

            .WithMany(p => p.PostTags)

            .HasForeignKey(pt => pt.PostId);

        modelBuilder.Entity<PostTag>()

            .HasOne(pt => pt.Tag)

            .WithMany(t => t.PostTags)

            .HasForeignKey(pt => pt.TagId);

      //}end

    }

}

public class Post

{

    public int PostId { get; set; }

    public string Title { get; set; }

    public string Content { get; set; }

    public List<PostTag> PostTags { get; set; }

}

public class Tag

{

    public string TagId { get; set; }

    public List<PostTag> PostTags { get; set; }

}

public class PostTag //多对多的关系表

{

    public int PostId { get; set; }

    public Post Post { get; set; }

    public string TagId { get; set; }

    public Tag Tag { get; set; }

}

 

  1. 私有属性的映射支持。 注意默认保证公开 和私有的命名大小写完全一致(除了首字母) , 当然你可以通过hasField来指定不同的命名规则的field。 sample code 如下

class MyContext : DbContext

{

    public DbSet<Blog> Blogs { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)

    {

  modelBuilder.Entity<Blog>()

    .Property(b => b.Url)

    .HasField(“_validatedUrl”)

    .UsePropertyAccessMode(PropertyAccessMode.Field);

    }

}

public class Blog

{

    private string _validatedUrl;

    public int BlogId { get; set; }

    public string Url

    {

        get { return _validatedUrl; }

    }

    public void SetUrl(string url)

    {

        using (var client = new HttpClient())

        {

            var response = client.GetAsync(url).Result;

            response.EnsureSuccessStatusCode();

        }

        _validatedUrl = url;

    }

}

 

3.EF core读取connection string 是从appsetting.json中获取的。

4.EF core支持内存模式, 即对DbContext的操作存入内存中,而不是持久化到数据库文件中

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/234112.html原文链接:https://javaforall.net

(0)
上一篇 2025年6月11日 下午1:22
下一篇 2025年6月11日 下午2:01


相关推荐

  • Google 地图切片URL地址解析

    Google 地图切片URL地址解析一、Google地图切片的投影方式及瓦片索引机制1.地图投影Google地图采用的是Web墨卡托投影(如下图),为了方便忽略了两极变形较大的地区,把世界地图做成了一个边长等于赤道周长的正方形(赤道半径为6378137米),原点在正方形中心,即经纬度为(0,0)处。Web墨卡托投影的X,Y坐标取值范围为:[-20037508.3427892,20037508.3427892]…

    2022年6月16日
    51
  • HI3516DV300 GPIO操作

    HI3516DV300 GPIO操作前言本次实验根据ProYuan28博主写的博客GPIO文档进行适配调试,特此记录GPIO操作。正文GPIO分为三个步骤:1设置gpio端口复用寄存器;2设置GPIO口的方向寄存器(GPIO_DIR);3设置读取或者写入GPIO值寄存器(GPIO_DATA);实验平台:HI3516DV300…

    2025年11月25日
    7
  • Vue常用指令(二)

    Vue常用指令(二)6、v-for基于源数据多次渲染元素或模板块。图示:代码:<body><div id=”app”> <p v-for=”(score, index) in scores”> 索引: {{index }} , 分数: {{score}} </p> <div v-for=”(d, ke…

    2022年6月13日
    27
  • Web前端测试题

    JS题目:在JavaScript中()方法可以对数组元素进行排序。A.add()B.join()C.sort()D.length()答案:http://hovertree.com/ti

    2021年12月22日
    45
  • Android中二维码的扫描与生成(zxing库)

    Android中二维码的扫描与生成(zxing库)2 集成 java 源码 将 demo 工程 QrScan 中 app src main java 目录下包中的 zxing 和 util 复制到此工程对应的 app src main java 的包下 layout 复制 activity capture xml activity scanner xml toolbar scanner xml values 复制 替换其中的 attrs xml ids xml colors xml 1 将获取的 jar 包复制到工程的 app libs 目录下 刷新 然后去添加依赖

    2026年3月17日
    2
  • crm创建基于fetch自己的自定义报告

    crm创建基于fetch自己的自定义报告

    2022年1月3日
    40

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号