diff --git "a/\345\217\266\346\235\250/2024-04-06\344\273\200\344\271\210\346\230\257 Entity Framework Core\357\274\210EF Core\357\274\211\357\274\237.md" "b/\345\217\266\346\235\250/2024-04-06\344\273\200\344\271\210\346\230\257 Entity Framework Core\357\274\210EF Core\357\274\211\357\274\237.md" new file mode 100644 index 0000000000000000000000000000000000000000..3dcf0831e667b65d174559542db26ba7cb48cf08 --- /dev/null +++ "b/\345\217\266\346\235\250/2024-04-06\344\273\200\344\271\210\346\230\257 Entity Framework Core\357\274\210EF Core\357\274\211\357\274\237.md" @@ -0,0 +1,20 @@ +## 什么是 Entity Framework Core(EF Core)? + +Entity Framework Core(EF Core)是一个轻量级、可扩展且跨平台的对象关系映射(Object-Relational Mapping,ORM)框架,用于在.NET应用程序中实现数据访问。 + +## 主要特点 + +- **跨平台性**:EF Core支持在Windows、Linux和macOS上运行,可在不同的操作系统上开发和部署应用程序。 + +- **轻量级**:与以前的Entity Framework版本相比,EF Core更为轻量级,同时保持核心功能,使其更易于学习和使用。 + +- **可扩展性**:EF Core允许通过插件方式扩展功能,例如使用第三方提供的数据库提供程序或插件,以满足特定需求。 + +## 支持的数据库 + +EF Core支持多种数据库,包括但不限于: +- SQL Server +- MySQL +- PostgreSQL +- SQLite +- Oracle \ No newline at end of file diff --git "a/\345\217\266\346\235\250/2024-06-03.Dto\344\275\234\347\224\250.md" "b/\345\217\266\346\235\250/2024-06-03.Dto\344\275\234\347\224\250.md" new file mode 100644 index 0000000000000000000000000000000000000000..751341d4bd4ba73cfc174f4e368d99a4c98d0ae6 --- /dev/null +++ "b/\345\217\266\346\235\250/2024-06-03.Dto\344\275\234\347\224\250.md" @@ -0,0 +1,13 @@ +### DTO 的好处: +1. **数据封装与传输**:DTO用于在不同层之间传递数据,方便数据传输。 +2. **解耦**:避免直接暴露数据库模型,减少各层之间的耦合度。 +3. **数据验证与格式化**:添加数据注释和验证属性,确保传入数据符合预期格式和约束。 +4. **安全性**:避免将敏感数据库字段直接暴露给客户端。 +5. **数据转换**:用于转换复杂数据结构为简单结构,或将客户端传入数据转换为业务逻辑处理结构。 + +### 使用 DTO 的写法: +1. **接口**:定义了对作者数据进行操作的方法,返回的数据都是 AuthorDto 类型。 +2. **服务实现接口**:包含了对作者数据进行增删改查操作的具体实现,将数据从数据库模型转换为 DTO 对象。 +3. **控制器**:调用服务层方法,保持纯洁性,根据请求类型进行相应的操作,返回相应的结果。 + +通过使用 DTO,实现了数据传输的封装、解耦、数据验证、安全性和数据转换等功能,使得不同层之间的数据传输更加清晰和可控。这种设计模式有助于提高代码的可维护性和可扩展性。 \ No newline at end of file diff --git "a/\345\217\266\346\235\250/2024-06-04\346\216\245\345\217\243\347\232\204\345\256\236\347\216\260.md" "b/\345\217\266\346\235\250/2024-06-04\346\216\245\345\217\243\347\232\204\345\256\236\347\216\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..e971856cabfecff8c27bcc5bfbe35ae551f68d8f --- /dev/null +++ "b/\345\217\266\346\235\250/2024-06-04\346\216\245\345\217\243\347\232\204\345\256\236\347\216\260.md" @@ -0,0 +1,24 @@ +### 一、配置接口(IBookRepository): +1. **GetBookById(Guid id)**:获取指定 id 的图书。 +2. **GetAllBooks(Guid authorId)**:获取指定作者的全部图书。 +3. **AddBook(Guid authorId, AddBookDto addBookDto)**:添加图书。 +4. **UpdateBook(Guid bookId, BookDtoUpdate bookDtoUpdate)**:修改图书。 +5. **DelBook(Guid bookId)**:删除图书。 + +### 二、实现接口: +1. **AddBook(Guid authorId, AddBookDto addBookDto)**:添加图书的具体实现,包括创建新的图书对象并将其添加到数据库。 +2. **GetAllBooks(Guid authorId)**:获取指定作者的全部图书的具体实现。 +3. **GetBookById(Guid id)**:获取指定 id 的图书的具体实现。 +4. **UpdateBook(Guid bookId, BookDtoUpdate bookDtoUpdate)**:修改图书的具体实现,包括更新图书信息。 +5. **DelBook(Guid id)**:删除图书的具体实现。 + +### 三、控制器操作: +1. **Get(Guid authorId, Guid? bookId)**:根据作者 ID 获取图书信息,可以根据图书 ID 获取特定图书信息。 +2. **Post(Guid authorId, AddBookDto addBookDto)**:添加图书,需要提供作者 ID 和要添加的图书信息。 +3. **Put(Guid authorId, Guid bookId, BookDtoUpdate bookDtoUpdate)**:修改图书信息,需要提供作者 ID、图书 ID 和要更新的图书信息。 +4. **Del(Guid authorId, Guid bookId)**:删除图书,需要提供作者 ID 和要删除的图书 ID。 + +### 集合接口整理(PlantUML版): +- 图书(Books)集合接口的结构图已经展示在您提供的 PlantUML 图中,但我无法在当前环境中显示该图片。您可以参考您提供的 PlantUML 图来查看集合接口的结构。 + +通过上述接口、实现和控制器操作,实现了对图书数据的增删改查功能,保持了良好的结构化和逻辑清晰,有助于代码的可维护性和可扩展性。 \ No newline at end of file diff --git "a/\345\217\266\346\235\250/2024-06-07.\345\234\250.NET\344\270\255\350\277\236\346\216\245SQL Server\346\225\260\346\215\256\345\272\223.md" "b/\345\217\266\346\235\250/2024-06-07.\345\234\250.NET\344\270\255\350\277\236\346\216\245SQL Server\346\225\260\346\215\256\345\272\223.md" new file mode 100644 index 0000000000000000000000000000000000000000..51a51f99e9407bd2c5336c1392005ee4de8fce0d --- /dev/null +++ "b/\345\217\266\346\235\250/2024-06-07.\345\234\250.NET\344\270\255\350\277\236\346\216\245SQL Server\346\225\260\346\215\256\345\272\223.md" @@ -0,0 +1,49 @@ +# 在.NET中连接SQL Server数据库 + +## 使用Entity Framework Core连接SQL Server + +1. **安装三个包和一个工具** +- ``dotnet add package Microsoft.EntityFrameWorkCore`` —— 核心库,提供了用于数据访问和操作的API +- ``dotnet add package Microsoft.EntityFrameWorkCore.Sqlserver`` —— 允许与数据库进行交互 +- ``dotnet add package Microsoft.EntityFrameWorkCore.Design`` —— 设计时工具,用于支持数据库迁移和模型生成 +- ``dotnet tool install -g dotnet-ef`` —— 用于使用 Entity Framework Core 进行数据库迁移操作 + +2. **定义数据上下文** + 创建一个继承自`DbContext`的数据上下文类,并指定要连接的SQL Server数据库。 + ```csharp + public class MyDbContext : DbContext + { + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) + { + optionsBuilder.UseSqlServer("Server=your_server;Database=your_database;uid=sa;pwd=123456;Trusted_Connection=True;"); + } + + public DbSet Products { get; set; } + } + ``` + +3. **创建实体类** + 定义表示数据库表的实体类,并将其添加到数据上下文中以便EF Core跟踪。 + ```csharp + public class Product + { + public int Id { get; set; } + public string Name { get; set; } + public decimal Price { get; set; } + } + ``` + +4. **使用EF Core进行数据操作** + 在应用程序中实例化数据上下文,然后使用EF Core进行数据库操作(增删改查)。 + ```csharp + using (var context = new MyDbContext()) + { + var product = new Product { Name = "Example", Price = 9.99 }; + context.Products.Add(product); + context.SaveChanges(); + } + ``` + +5. **数据库迁移** +- ``dotnet ef migrations add `` —— 对本次修改生成迁移说明文件 +- ``dotnet ef database update`` —— 对其数据库进行同步 \ No newline at end of file