栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

快速上手 ABP 框架学习笔记记录(30天学习记录)第四天

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

快速上手 ABP 框架学习笔记记录(30天学习记录)第四天

ABP 在网上火了很久了,之前自己的有学习过一小段时间,但之后懒癌发作,就停止学习了。
人生啊,还真的要不断学习~由其是当编程人员!!!!
不说了,为了备忘,所以记录下一些比较重要的东西。

一个不错的ABP博客文:http://www.cnblogs.com/sheng-jie/p/6260035.html

写得很好的~而且有代码

代码完成后再上传

1.数据迁移

命令: update-database
Add-Migration Add_yourEntityName_Entity

如果你在ABP 官网下载了DEMO(带ZERO),使用VS2017(以后可能20XX)打开,重新生成后,设置web项目下的WEB.ConFIG 数据库连接字符串后,可以使用以上两个代码生成数据库。

创建新的表(EF Code First)

在XXX.Core 领域项目下,新建类. (例如 School)

继承 ABP 中的 ENTITY 类, 该类有一个属性 Id , 默认为 INT 类型的,

但也可以修改为其他类型。

   demo : public class School :Entity{   .....    }

创建完一个类,那么如何通过命令新增数据库呢?
Add-Migration Add_yourEntityName_Entity 命令就可以出场了。
(PS:
1.必须设置WEB 、WEB API 项目为启用项
2.在工具-》NuGet包管理器-》程序包管理控制台

如下图

PM> Add-Migration Add_yourEntityName_Entity

回车后,正常情况会在 Demo.Entityframework 项目下生成一个以时间格式+类名 的文件

然后再使用

PM>Update Database 

这样数据库就会新建一张表


Application

Application 是 WEB 和 CODE 项目间的桥梁,

DTO

个人理解是:同一个表,在不同的页面,需要展示的属性是不同的。不多不少只展示需求暴露的属性就好了,DTO 就是不同的 视图类。
建不同的DTO 类有利于扩展和不会造成混乱。(这个简单说法不太能说明DTO的好处,不想在这里说太多了,在写比较复杂的页面时,就能体会到)

IXXXXService
代码如下: 创建一个接口并现实,然后在WEB 中就可以调用了。
那么数据库中的交互是怎样的呢?
(从官网下载的项目中: XXXX.Entityframework中的文件夹Entityframework 有一个文件:XXXXDbContext)

新建一个类后在此页面中添加: DEMO如下

  public class DemoDbContext : AbpZeroDbContext
    {
 //TODO: Define an IDbSet for your Entities...

     public IDbSet School { get; set; }

     ......其他代码......
   }
 public interface ISchoolService : IApplicationService
    {
 void GetAll();
    }

public class SchoolService:ISchoolService
    {
 private readonly IRepository _SchoolsRepository;

 public SchoolService(IRepository schoolsRepository)
 {
     _SchoolsRepository = schoolsRepository;
 }

 public void GetAll()
 {
     var list = _SchoolsRepository.GetAll().ToList();
 }
    }

上述代码: 应该不难理解,要注意一点是: 如果在ABP中没有创建类的Repository (School 类就没有),则可以使用ABP框架中的Repository 的方法。如下图:

写好这里,那么在WEB项目中 注入构造函数,即可以与数据库交互了。


Repositories

上面说到,如果ABP 提供的方法不能满足你的需求,那么这要自定义一个Repositories

新建Repositories 和实现 Repositories 在 CORE 和 Entityframework 项目中

1.CORE 项目下的 IRepositories 文件夹 新建一个 IStudentRepository

   // Student 学习实体(不清楚,看上面)
   public interface IStudentRepository: IRepository
    {
 void GetStudentTest();
    }

2.Entityframework 项目中实现新建的 IRepositories

Entityframework -》Entityframework-》Repositories文件夹

 public class StudentRepository:DemoRepositorybase, IStudentRepository
    {
 public StudentRepository(IDbContextProvider dbContextProvider):base(dbContextProvider)
 {

 }
 //获取学生信息
 public void GetStudentTest()
 {
     var query = GetAllList();
 }
    }

继承DemoRepositorybase 并实现接口

编写完以上代码,那么要在 Application 项目中调用。

public class StudentService : IStudentService
    {

 //因为自定义了Repository,所以不用  IRepository 
 private readonly IStudentRepository _StudentRepository;

 public StudentService(IStudentRepository studentRepository)
 {
     _StudentRepository = studentRepository;
 }

 //这个方法是 IStudentService 中定义的
 public void GetStudentTest()
 {
    //这个方法是在 IStudentRepository 中定义的
     _StudentRepository.GetStudentTest();
 }
    }

然后在WEB层就能调用,测试过,能获取到数据

坚持的第四天。

在剩余2017年里,每晚也要学习!!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/231991.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号