zoukankan      html  css  js  c++  java
  • netcore2.0 ORM框架中如何配置自定义的主外键加载

    环境:netcore2.0
    DB :mysql
    NUGET:Install-Package AntData.Core.Mysql
     
    测试的表结构:
     
     
    新建一个netcore app项目
     
    然后添加一个 名称为 Model 的 .Net Standard2.0 项目
     
    https://github.com/yuzd/AntData.ORM/tree/netcore2/AntData/AntData.DbModels里面copy出3个文件夹放入到 刚刚新建的 Model
    的项目中
     
     
    打开上图中的 EntityRobotForMysql.tt 脚本文件 然后把里面的 db的信息替换成自己的
     
    person 和 school表 虽然没有在db层建立 主外键关系
    然后依然可以在orm层映射主外键关系【这个也是ant orm的一个特色】
    在 EntityRobotForMysql.tt 加入下面的代表 就能映射2个表的主外键关系了
    然后按 Ctrl+S 触发生成 model 文件
    分为三部分
    1:Entitys类 相当于db ,每个 IQueryable类型的Property 相当于 一个Table
    2:具体的每个table的定义
    3:table的扩展类
     
     
    var person = DB.Tables.People.FirstOrDefault(r => r.Name.Equals("nainaigu"));
    这个的意思是 查询 person表里面第一个 name = nainaigu 的row
    那如何加载外键 scholl的意思呢
    使用LoadWith 方法 的意思是 查询的时候加载外键,外键我们刚刚在tt文件里面配置了
    var person = DB.Tables.People.LoadWith(r=>r.School).FirstOrDefault(r => r.Name.Equals("nainaigu"));
     
     
     
     
    总结:
    一般dba都不会建议你直接在db里面建主外键。都建议在代码层控制。
    使用antorm框架在配置一下主外键映射关系,代码中用loadWith加载外键model 提供了便捷。
    针对orm框架如果您有好的建议请畅所欲言
     
    附demo下载
  • 相关阅读:
    Linux操作系统原理
    html标签简介(常用)
    Git常用命名
    Nuxt.js vue服务端渲染
    Sequelize 和 MySQL 对照Sequelize 和 MySQL 对照
    VScode 自定义用户代码块
    python对一个文本的解析
    API管理工具
    Flutter教程- Dart语言规范-知识点整理
    RESTful API
  • 原文地址:https://www.cnblogs.com/yudongdong/p/7469010.html
Copyright © 2011-2022 走看看