第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Asp.Net MVC 分層架構(gòu)中的循環(huán)依賴

Asp.Net MVC 分層架構(gòu)中的循環(huán)依賴

C#
MMTTMM 2022-12-04 13:11:33
我是 Asp.Net MVC 的新手,想將我的項(xiàng)目拆分為具有 1- MVC 項(xiàng)目(表示層 UI 層)2- 業(yè)務(wù)邏輯層 BLL 的分層架構(gòu)(在這里我想驗(yàn)證數(shù)據(jù)視圖模型并將視圖模型轉(zhuǎn)換為數(shù)據(jù)庫模型使用自動(dòng)映射器,然后想通過使用自動(dòng)映射器轉(zhuǎn)換回 UI(MVC 項(xiàng)目)層 3 數(shù)據(jù)訪問層來發(fā)送回視圖模型,數(shù)據(jù)訪問層具有存儲(chǔ)庫 DB 上下文等,我只想在業(yè)務(wù)層中引用它們。我的困惑是在業(yè)務(wù)邏輯層和 MVC 項(xiàng)目 (UI) 層之間。我的視圖模型類位于 MVC 項(xiàng)目內(nèi)的模型文件夾中,業(yè)務(wù)邏輯層引用了具有數(shù)據(jù)庫表類的數(shù)據(jù)訪問層。所以我的視圖模型在業(yè)務(wù)邏輯層中無法識(shí)別。如果我想添加 MVC 項(xiàng)目(我的視圖模型存在的地方)對業(yè)務(wù)邏輯層的引用,它會(huì)給出循環(huán)依賴錯(cuò)誤。我在論壇和教程上進(jìn)行了大量搜索,但未能找到解決方案或無法理解這個(gè)概念。我的業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層是庫項(xiàng)目,而 UI 層是 MVC 項(xiàng)目是否有人可以通過將數(shù)據(jù)視圖模型發(fā)送到業(yè)務(wù)邏輯層并從業(yè)務(wù)邏輯層接收后視圖模型來舉例說明數(shù)據(jù)訪問層namespace DAL.Infrastructure.Contract{    public interface IBaseRepository<T> : IDisposable where T : class    {        IEnumerable<T> GetAll();        IEnumerable<T> FindIEnumerableByExpression(Expression<Func<T, bool>> predicate);        T FindFirstOrDefaultByExpression(Expression<Func<T, bool>> predicate);        T GetById(object Id);        T Insert(T entity);        T Delete(T entity);        void Update(T entity);        void Save();    }}namespace DAL.Infrastructure{    public class BaseRepository<T> : IBaseRepository<T> where T : class    {        public PMSEntities dbContext = null;        public DbSet<T> dbSet = null;        public BaseRepository()        {            this.dbContext = new PMSEntities();            dbSet = dbContext.Set<T>();        }        public virtual IEnumerable<T> GetAll()        {            return dbSet.AsEnumerable<T>();        }        public T GetById(object id)        {            return this.dbSet.Find(id);        }        public IEnumerable<T> FindIEnumerableByExpression(System.Linq.Expressions.Expression<Func<T, bool>> predicate)        {            IEnumerable<T> query = dbSet.Where(predicate).AsEnumerable();            return query;        }        public T FindFirstOrDefaultByExpression(System.Linq.Expressions.Expression<Func<T, bool>> predicate)        {            return this.dbSet.FirstOrDefault(predicate);        }我想在業(yè)務(wù)邏輯層中使用上面的類,而不是直接在控制器中使用。這是我的困惑如何編寫業(yè)務(wù)邏輯層并在具有循環(huán)依賴錯(cuò)誤的業(yè)務(wù)邏輯層中使用自動(dòng)映射器
查看完整描述

1 回答

?
夢里花落0921

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個(gè)贊

ViewModels 不應(yīng)該是業(yè)務(wù)邏輯層的一部分,因?yàn)樗鼈兗兇馐菫榱苏故尽D悻F(xiàn)在如何組織它使得業(yè)務(wù)需要 UI/View,這需要業(yè)務(wù)開始,這需要 UI/View 開始(重復(fù)...)

UI/View 可能知道業(yè)務(wù)層,但反過來就不知道了。因此,執(zhí)行此操作的“正確”方法是首先將您的數(shù)據(jù)庫信息映射到一個(gè)普通的舊 C# 對象,您的 UI 層可能會(huì)通過業(yè)務(wù)層請求該對象。之后,UI 層可能會(huì)通過將其轉(zhuǎn)換為經(jīng)過優(yōu)化以顯示該信息的類 ViewModel 來完成其工作。這并不意味著您必須在控制器內(nèi)部執(zhí)行此操作,您可以在 UI/View 項(xiàng)目中添加其他類來處理邏輯。

UI/View 可以了解業(yè)務(wù),業(yè)務(wù)可以了解數(shù)據(jù)訪問,但絕不會(huì)反過來。這樣你就不會(huì)得到循環(huán)依賴并且沒有糾纏的代碼。

我希望這對你有意義。


查看完整回答
反對 回復(fù) 2022-12-04
  • 1 回答
  • 0 關(guān)注
  • 142 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號