<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      一個庫幫你快速實現EF Core數據倉儲模式

      前言

      EF Core是我們.NET日常開發中比較常用的ORM框架,今天大姚要分享的內容是如何使用EF Core Generic Repository通用倉儲庫來快速實現EF Core數據倉儲模式。

      EF Core Generic Repository介紹

      該庫是EF Core ORM的通用倉儲庫實現,旨在簡化開發人員為每個.NET Core和.NET項目編寫倉儲層的工作。通過使用這個庫,開發人員可以更輕松地管理數據訪問層,提高開發效率。

      值得推薦的.NET ORM框架

      對于還不知道怎么選擇.NET ORM框架的同學可以看下面這兩篇文章,希望對你會有所幫助??。

      數據倉儲(Repository)介紹

      Repository(倉儲)是DDD(領域驅動設計)中的經典思想,可以歸納為介于實際業務層(領域層)和數據訪問層之間的層,能讓領域層能在感覺不到數據訪問層的情況下,完成與數據庫的交互和以往的DAO(數據訪問)層相比,Repository層的設計理念更偏向于面向對象,而淡化直接對數據表進行的CRUD操作。

      類庫特點

      • 該庫可以在任何. NET Core或.NET應用程序上運行,該應用程序具有.NET Core 3.1、.NET Standard 2.1和.NET 5.0+支持。
      • 提供了帶有數據庫事務支持的通用存儲庫。
      • 擁有所有必需的方法,以任何你想要的方式查詢數據,而無需從存儲庫獲取IQueryable。
      • 支持Specification<T>模式,使你能夠動態構建查詢,即延遲查詢構建。
      • 具有針對你的查詢的數據庫級投影支持。
      • 支持針對你的關系型數據庫運行原始SQL命令。
      • 支持選擇是否要跟蹤你的查詢實體/實體。
      • 支持在確實需要時重置你的EF Core DbContext狀態。
      • 具有完整的單元測試支持。
      • 支持分頁、原始SQL查詢支持復雜類型和原始類型。

      項目源代碼

      新建控制臺應用

      新建名為:GenericRepositoryExercise控制臺應用。

      相關類庫安裝

      搜索名為:TanvirArjel.EFCore.GenericRepository的NuGet安裝。

      因為我們要訪問Microsoft SQL Server數據庫,因此我們需要安裝Microsoft.EntityFrameworkCore.SqlServer NuGet包。

      新建UserInfo類

          [Table("UserInfo")]
          public class UserInfo
          {
              [Key]
              public int Id { get; set; }

              [Required]
              public string Name { get; set; }

              [Required]
              public int Age { get; set; }

              [Required]
              public string Email { get; set; }
          }

      新建數據庫上下文類

      新建名為:TestDbContext數據庫上下文類。

          public class TestDbContext : DbContext
          {
              public TestDbContext(DbContextOptions<TestDbContext> options) : base(options)
              {
              }

              public DbSet<UserInfo> UserInfo { get; set; }
          }

      新建UserInfoService(包含常見CRUD)

            public class UserInfoService
          {
              private readonly IRepository<TestDbContext> _repository;

              public UserInfoService(IRepository<TestDbContext> repository)
              {
                  _repository = repository;
              }

              public async Task UserInfoCRUD()
              {
                  // 創建一個新用戶
                  var newUser = new UserInfo { Name = "daydayup", Age = 28, Email = "daydayup@example.com" };
                  await _repository.AddAsync(newUser);
                  await _repository.SaveChangesAsync();

                  // 更新用戶信息
                  newUser.Email = "new_updated@example.com";
                  _repository.Update(newUser);
                  await _repository.SaveChangesAsync();

                  // 刪除用戶
                  _repository.Remove(newUser);
                  await _repository.SaveChangesAsync();

                  // 查詢所有用戶
                  var users = await _repository.GetListAsync<UserInfo>();
                  foreach (var user in users)
                  {
                      Console.WriteLine($"Id: {user.Id}, Name: {user.Name}, Age: {user.Age}, Email: {user.Email}");
                  }

                  //查詢總數
                  var totalCount = await _repository.GetCountAsync<UserInfo>();

                  // 根據條件查詢用戶
                  var filteredUsers = await _repository.GetListAsync<UserInfo>(u => u.Age > 25);
                  foreach (var user in filteredUsers)
                  {
                      Console.WriteLine($"Id: {user.Id}, Name: {user.Name}, Age: {user.Age}, Email: {user.Email}");
                  }
              }
          }

      在Program.cs中注冊相關服務

            internal class Program
          {
              static async Task Main(string[] args)
              {
                  //設置依賴注入容器
                  IServiceCollection services = new ServiceCollection();
                  services.AddScoped<UserInfoService>();

                  var connectionString = "Server=.;Database=MyTestDB;User Id=test;Password=123456;trustServerCertificate=true;";
                  services.AddDbContext<TestDbContext>(option => option.UseSqlServer(connectionString));

                  //注冊DbConext后立即調用它
                  services.AddGenericRepository<TestDbContext>();

                  IServiceProvider serviceProvider = services.BuildServiceProvider();

                  //從容器中獲取UserInfoService實例并執行操作
                  var userInfoService = serviceProvider.GetRequiredService<UserInfoService>();
                  await userInfoService.UserInfoCRUD();
              }
          }

      項目源碼地址

      更多項目實用功能和特性歡迎前往項目開源地址查看??,別忘了給項目一個Star支持??。

      優秀項目和框架精選

      該項目已收錄到C#/.NET/.NET Core優秀項目和框架精選中,關注優秀項目和框架精選能讓你及時了解C#、.NET和.NET Core領域的最新動態和最佳實踐,提高開發工作效率和質量。坑已挖,歡迎大家踴躍提交PR推薦或自薦(讓優秀的項目和框架不被埋沒??)。

      https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.md

      DotNetGuide技術社區交流群

      • DotNetGuide技術社區是一個面向.NET開發者的開源技術社區,旨在為開發者們提供全面的C#/.NET/.NET Core相關學習資料、技術分享和咨詢、項目框架推薦、求職和招聘資訊、以及解決問題的平臺。
      • 在DotNetGuide技術社區中,開發者們可以分享自己的技術文章、項目經驗、學習心得、遇到的疑難技術問題以及解決方案,并且還有機會結識志同道合的開發者。
      • 我們致力于構建一個積極向上、和諧友善的.NET技術交流平臺。無論您是初學者還是有豐富經驗的開發者,我們都希望能為您提供更多的價值和成長機會。

      歡迎加入DotNetGuide技術社區微信交流群??

      posted @ 2024-04-08 08:00  追逐時光者  閱讀(2668)  評論(11)    收藏  舉報
      主站蜘蛛池模板: 日韩中文字幕免费在线观看| 激情国产一区二区三区四区| 徐闻县| 国产视频一区二区在线看| 一本久道久久综合中文字幕| 色噜噜久久综合伊人一本| 仁布县| 亚洲乱熟女一区二区三区| 国产精品自拍午夜福利| 国产精品办公室沙发| 国产精品va在线观看无码不卡| 精品视频在线观自拍自拍| 人妻人人妻a乱人伦青椒视频 | 欧美牲交a欧美在线| 国产精品露脸视频观看| 亚洲av午夜福利大精品| 中国熟妇毛多多裸交视频| 小污女小欲女导航| 国产精品无码av在线一区| 亚洲人妻系列中文字幕| 免费无码毛片一区二三区| 浪潮av色综合久久天堂| 国产一区二区三区亚洲精品| 日本熟妇色xxxxx日本免费看| 欧美一本大道香蕉综合视频| 91孕妇精品一区二区三区| 国产精品点击进入在线影院高清| 丰城市| 日韩熟妇| 国产白嫩护士在线播放| 国产欧美精品一区二区三区四区 | 日韩国产中文字幕精品| 无码天堂va亚洲va在线va| 精品久久精品久久精品久久| 二区中文字幕在线观看| 欧美牲交a免费| 欧美成人午夜性视频| 艳妇乳肉豪妇荡乳在线观看| 99精品全国免费观看视频| 么公的好大好硬好深好爽视频| 人妻少妇偷人作爱av|