真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Asp.netcore下用DependencyInjection分離業(yè)務(wù)處理

關(guān)于asp.net core中的Dependency Injection的介紹參見(jiàn)https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection

成都創(chuàng)新互聯(lián)公司主營(yíng)含山網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都App定制開(kāi)發(fā),含山h5成都微信小程序搭建,含山網(wǎng)站營(yíng)銷(xiāo)推廣歡迎含山等地區(qū)企業(yè)咨詢(xún)

其實(shí)本文思路很簡(jiǎn)單,就是在StartUp.ConfigureServices把ORM(這里用的是EF)注入,然后再把業(yè)務(wù)類(lèi)注入,使用的時(shí)候從Controller中獲取業(yè)務(wù)類(lèi)對(duì)象使用即可。這種場(chǎng)景適合多種數(shù)據(jù)庫(kù),只需在StartUp.ConfigureServices中要怕appsetting.json的配置來(lái)確定注入什么樣的ORM或數(shù)據(jù)連接,和什么樣的實(shí)現(xiàn)業(yè)務(wù)子類(lèi)就可以,還是來(lái)看五代碼實(shí)現(xiàn)吧。

1、首先這義業(yè)務(wù)模塊的操作接口和類(lèi):

/// 
/// 用戶(hù)操作接口
/// 
public interface IUserRepository
{
    /// 
    /// 添加用戶(hù)
    /// 
    /// 用戶(hù)名
    /// 用戶(hù)密碼
    void AddUser(string userName, string password);
    /// 
    /// 查詢(xún)?nèi)坑脩?hù)
    /// 
    /// 
    /// 
    List GetAllUsers();
}
/// 
/// SQL Server Entity Framework實(shí)現(xiàn)的用戶(hù)管理類(lèi)型
/// 
public class UserRepository : IUserRepository
{
    /// 
    /// 數(shù)據(jù)庫(kù)實(shí)體
    /// 
    readonly PermissionContext _db;
    /// 
    /// 用戶(hù)管理構(gòu)造
    /// 
    /// StartUp.ConfigureServices依賴(lài)注入的數(shù)據(jù)庫(kù)Context
    public UserRepository(PermissionContext db)
    {
        _db = db;
    }
    /// 
    /// 添加用戶(hù)
    /// 
    /// 用戶(hù)名
    /// 用戶(hù)密碼
 
    public void AddUser(string userName,string password)
    {
        _db.Users.Add(new BeginDemo.User() { UserName = userName, Password = password });
        _db.SaveChanges();
    }
    /// 
    /// 查詢(xún)?nèi)坑脩?hù)
    /// 
    /// 
    public List GetAllUsers()
    {
        return _db.Users.ToList();
    }
}

也可以定義另外的實(shí)現(xiàn)IUserRepository接口的子類(lèi),來(lái)分離不同ORM的實(shí)現(xiàn)。

2、接著在StartUp.ConfigureServices中添加注入(ORM注放和業(yè)務(wù)類(lèi)注入)

 

//添加EF對(duì)象
services.AddDbContext(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
 
//添加用戶(hù)操作對(duì)象,可以在這里切換注入的子類(lèi)(不同的子類(lèi)實(shí)現(xiàn)不同數(shù)據(jù)庫(kù)或ORM操作)
services.AddSingleton();

關(guān)于EF在asp.net core的應(yīng)用,請(qǐng)參照:http://axzxs.blog.51cto.com/730810/1894317

3、接下來(lái)就可以很快樂(lè)的在Controller中使用業(yè)務(wù)模塊了:

public class HomeController : Controller
{
    readonly IUserRepository _userRep;
    public HomeController(IUserRepository userRep)
    {
        _userRep = userRep;
    }
    public IActionResult Index()
    {
        return View(_userRep.GetAllUsers());
    }
}

當(dāng)ORM發(fā)生變化時(shí),HomeController和View是不變的,因?yàn)檫@里使用的是IUserRepository接口,利用依賴(lài)倒轉(zhuǎn)的原則降低模塊的耦合,提升了程序的擴(kuò)展性。

代碼參考:https://github.com/axzxs2001/Asp.NetCoreExperiment


新聞標(biāo)題:Asp.netcore下用DependencyInjection分離業(yè)務(wù)處理
文章分享:http://weahome.cn/article/gpscci.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部