日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# 搭建一个 基于ISqlSugarClient 三层架构框架 涉及数据库仓储 然后中间又有业务逻辑层 案例

發(fā)布時(shí)間:2025/3/8 C# 26 如意码农
生活随笔 收集整理的這篇文章主要介紹了 C# 搭建一个 基于ISqlSugarClient 三层架构框架 涉及数据库仓储 然后中间又有业务逻辑层 案例 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

要在C#中搭建基于ISqlSugarClient的三層架構(gòu)框架,你需要定義數(shù)據(jù)訪問層(DAL)、業(yè)務(wù)邏輯層(BLL)和表現(xiàn)層(UI)。下面是一個(gè)完整的例子,涉及數(shù)據(jù)庫(kù)倉(cāng)儲(chǔ)、業(yè)務(wù)邏輯層,以及依賴注入。這個(gè)例子基于ASP.NET Core MVC構(gòu)建,使用ISqlSugarClient來處理數(shù)據(jù)訪問。這個(gè)例子中,我們將使用User作為一個(gè)簡(jiǎn)單的實(shí)體來演示三層架構(gòu)。

數(shù)據(jù)庫(kù)實(shí)體類

public class User
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}

數(shù)據(jù)訪問層接口與實(shí)現(xiàn)

// 數(shù)據(jù)訪問層接口
public interface IUserRepository
{
User GetById(int id);
List<User> GetAll();
void Add(User user);
void Update(User user);
void Delete(int id);
} // 基礎(chǔ)倉(cāng)儲(chǔ)實(shí)現(xiàn)
public abstract class BaseRepository<T> where T : class, new()
{
protected readonly ISqlSugarClient _sqlSugarClient; protected BaseRepository(ISqlSugarClient sqlSugarClient)
{
_sqlSugarClient = sqlSugarClient;
} public virtual T GetById(int id)
{
return _sqlSugarClient.Queryable<T>().InSingle(id);
} public virtual List<T> GetAll()
{
return _sqlSugarClient.Queryable<T>().ToList();
} public virtual void Add(T entity)
{
_sqlSugarClient.Insertable(entity).ExecuteCommand();
} public virtual void Update(T entity)
{
_sqlSugarClient.Updateable(entity).ExecuteCommand();
} public virtual void Delete(int id)
{
_sqlSugarClient.Deleteable<T>().In(id).ExecuteCommand();
}
} // User數(shù)據(jù)訪問層實(shí)現(xiàn)
public class UserRepository : BaseRepository<User>, IUserRepository
{
public UserRepository(ISqlSugarClient sqlSugarClient) : base(sqlSugarClient)
{
}
}

業(yè)務(wù)邏輯層

public class UserService
{
private readonly IUserRepository _userRepository; public UserService(IUserRepository userRepository)
{
_userRepository = userRepository;
} public User GetUserById(int id)
{
return _userRepository.GetById(id);
} public List<User> GetAllUsers()
{
return _userRepository.GetAll();
} public void AddUser(User user)
{
_userRepository.Add(user);
} public void UpdateUser(User user)
{
_userRepository.Update(user);
} public void DeleteUser(int id)
{
_userRepository.Delete(id);
}
}

依賴注入配置

public class DependencyInjectionConfig
{
public static void Configure(IServiceCollection services, string connectionString)
{
// 注冊(cè)ISqlSugarClient實(shí)例
services.AddScoped<ISqlSugarClient>(_ => new SqlSugarClient(new ConnectionConfig()
{
ConnectionString = connectionString,
DbType = DbType.SqlServer,
InitKeyType = InitKeyType.Attribute,
IsAutoCloseConnection = true
})); // 注冊(cè)數(shù)據(jù)訪問層接口和實(shí)現(xiàn)類
services.AddScoped<IUserRepository, UserRepository>(); // 注冊(cè)業(yè)務(wù)邏輯層
services.AddScoped<UserService>();
}
}

表現(xiàn)層示例

public class UserController : Controller
{
private readonly UserService _userService; public UserController(UserService userService)
{
_userService = userService;
} public IActionResult Index()
{
var users = _userService.GetAllUsers();
return View(users);
} public IActionResult Details(int id)
{
var user = _userService.GetUserById(id);
if (user == null)
{
return NotFound();
}
return View(user);
} public IActionResult Create()
{
return View();
} [HttpPost]
public IActionResult Create(User user)
{
if (ModelState.IsValid)
{
_userService.AddUser(user);
return RedirectToAction("Index");
}
return View(user);
} public IActionResult Edit(int id)
{
var user = _userService.GetUserById(id);
if (user == null)
{
return NotFound();
}
return View(user);
} [HttpPost]
public IActionResult Edit(User user)
{
if (ModelState.IsValid)
{
_userService.UpdateUser(user);
return RedirectToAction("Index");
}
return View(user);
} public IActionResult Delete(int id)
{
var user = _userService.GetUserById(id);
if (user == null)
{
return NotFound();
}
return View(user);
} [HttpPost, ActionName("Delete")]
public IActionResult DeleteConfirmed(int id)
{
_userService.DeleteUser(id);
return RedirectToAction("Index");
}
}

Startup配置

public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
// 配置依賴注入
var connectionString = "YourConnectionStringHere";
DependencyInjectionConfig.Configure(services, connectionString); // 注冊(cè)MVC服務(wù)
services.AddControllersWithViews();
} public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
} app.UseHttpsRedirection();
app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
}

這個(gè)完整示例展示了如何在C#中構(gòu)建三層架構(gòu),包括數(shù)據(jù)訪問層、業(yè)務(wù)邏輯層和表現(xiàn)層。數(shù)據(jù)訪問層使用ISqlSugarClient與數(shù)據(jù)庫(kù)進(jìn)行交互,業(yè)務(wù)邏輯層包含應(yīng)用程序的核心業(yè)務(wù)邏輯,表現(xiàn)層負(fù)責(zé)與用戶交互。通過依賴注入,確保每一層之間的松耦合。

總結(jié)

以上是生活随笔為你收集整理的C# 搭建一个 基于ISqlSugarClient 三层架构框架 涉及数据库仓储 然后中间又有业务逻辑层 案例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。