什么是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的操作存入内存中,而不是持久化到数据库文件中

 

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • redis缓存雪崩 缓存穿透 缓存击穿如何解决_redis穿透和雪崩解决

    redis缓存雪崩 缓存穿透 缓存击穿如何解决_redis穿透和雪崩解决一:redis雪崩redis雪崩是指redis在某个时间大量失效,突然造成数据库访问压力急剧增大,像雪崩一样,redis雪崩危害巨大,甚至有可能服务器宕机,给公司造成巨大的经济损失。解决方案:设置超时时间的时候要设置随机值,不要设置固定值*缓存雪崩:key在同一时间失效,导致大量请求去访问数据库*返回min和max之间的一个随机秒数 privateLonggetRandomExpirationTime(Integermin,Integermax){

  • JDK新特性——Stream代码简洁之道的详细用法

    JDK新特性——Stream代码简洁之道的详细用法

    2020年11月20日
  • CSDN社区内容创作规范

    CSDN长久以来秉持初心,致力于为广大用户提供良好的创作环境,打造健康有序的技术生态!但良好的社区环境,需各位创作者与CSDN共同维护建立!【CSDN内容创作规范】请在发文前认真阅读:如你发布的内容存在以下问题,文章将无法通过审核,违规情节严重的,将对帐号进行封号处理。请各位创作者严格遵守社区的内容创作规范,共同守护我们的社区环境!目录一、在平台发布以下相关内容审核将不予通过1、违反法律法规和相关政策2、无资质发布专业领域内容3、流量作弊4、营销/推广引流5、不文明用语6、

  • 图文并茂 RAID 技术全解 – RAID0、RAID1、RAID5、RAID10

    图文并茂 RAID 技术全解 – RAID0、RAID1、RAID5、RAID10    RAID技术相信大家都有接触过,尤其是服务器运维人员,RAID概念很多,有时候会概念混淆。这篇文章为网络转载,写得相当不错,它对RAID技术的概念特征、基本原理、关键技术、各种等级和发展现状进行了全面的阐述,并为用户如何进行应用选择提供了基本原则,对于初学者应该有很大的帮助。一、RAID概述  1988年美国加州大学伯克利分校的D.A.Patterson教授等首次…

  • [JSP][JSTL]页面调用函数–它${fn:}内置函数、是推断字符串是空的、更换车厢

    [JSP][JSTL]页面调用函数–它${fn:}内置函数、是推断字符串是空的、更换车厢

  • 《增长黑客》节选与笔记[通俗易懂]

    《增长黑客》节选与笔记[通俗易懂]《增长黑客》节选与笔记自序1.1 创业家的黑暗前传1.2 增长黑客的胜利1.3 什么是“增长黑客”1.4 增长黑客的职责和特质1.5 一切用数据说话1.6 增长黑客担任的团队角色1.7 如何招聘增长黑客1.8 如何成为增长黑客1.9 增长黑客的常用工具箱第2章 创造正确的产品2.1 Instagram重生记2.2 PMF,探寻产品与市场的完美契合2.3 拒绝…

发表回复

您的电子邮箱地址不会被公开。

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