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

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

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 的新手,想將我的項目拆分為具有 1- MVC 項目(表示層 UI 層)2- 業(yè)務(wù)邏輯層 BLL 的分層架構(gòu)(在這里我想驗證數(shù)據(jù)視圖模型并將視圖模型轉(zhuǎn)換為數(shù)據(jù)庫模型使用自動映射器,然后想通過使用自動映射器轉(zhuǎn)換回 UI(MVC 項目)層 3 數(shù)據(jù)訪問層來發(fā)送回視圖模型,數(shù)據(jù)訪問層具有存儲庫 DB 上下文等,我只想在業(yè)務(wù)層中引用它們。我的困惑是在業(yè)務(wù)邏輯層和 MVC 項目 (UI) 層之間。我的視圖模型類位于 MVC 項目內(nèi)的模型文件夾中,業(yè)務(wù)邏輯層引用了具有數(shù)據(jù)庫表類的數(shù)據(jù)訪問層。所以我的視圖模型在業(yè)務(wù)邏輯層中無法識別。如果我想添加 MVC 項目(我的視圖模型存在的地方)對業(yè)務(wù)邏輯層的引用,它會給出循環(huán)依賴錯誤。我在論壇和教程上進(jìn)行了大量搜索,但未能找到解決方案或無法理解這個概念。我的業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層是庫項目,而 UI 層是 MVC 項目是否有人可以通過將數(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)依賴錯誤的業(yè)務(wù)邏輯層中使用自動映射器
查看完整描述

1 回答

?
夢里花落0921

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

ViewModels 不應(yīng)該是業(yè)務(wù)邏輯層的一部分,因為它們純粹是為了展示。你現(xiàn)在如何組織它使得業(yè)務(wù)需要 UI/View,這需要業(yè)務(wù)開始,這需要 UI/View 開始(重復(fù)...)

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

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

我希望這對你有意義。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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