亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

將 API 項目中的 ViewModel 綁定到 .NET CORE 2 EF 中 DAL 項目中的

將 API 項目中的 ViewModel 綁定到 .NET CORE 2 EF 中 DAL 項目中的

C#
米琪卡哇伊 2021-07-01 14:01:42
最近,我們在 .NET CORE 2 中啟動了一個新的 (API) 項目,它在 API 項目中有一些端點,在單獨的 DAL 項目中有數據庫 (POCO) 模型 (EF CORE)。通過使用 Entity Framework Core 和 FluentAPI,我們正在以代碼為先構建數據庫。在這兩個項目中都創建了一些概念驗證端點和表(也具有多對多關系)。這一切似乎都運行良好。然而,我們現在面臨的問題是一些 POCO 類與其他表/POCO 類有關系,請參見以下示例:public class Medium{    public Medium()    {        this.Hold = new HashSet<Hold>();        this.InExMedium = new HashSet<InExMedium>();    }    public long MediumID { get; set; }    public long SolutionID { get; set; }    public string Name { get; set; }    public Solution Solution { get; set; }    public ICollection<Hold> Hold { get; set; }    public ICollection<InExMedium> InExMedium { get; set; }}在我們的 Medium 端點中,我們不希望Hold和InExMedium屬性在ModelState.IsValid函數中可見或計算。我們的第一個解決方案是創建這些屬性internal而不是public,這在開始時有效。但是,我們很快意識到這不是正確的方法,因為其他功能無法再正確使用(例如LINQ)。至少我認為,解決方案是在ViewModels.對于上述問題,我創建了以下(測試)ViewModel:public class MediumViewModel{    public Medium Medium { get; set; }    public InExMedium InExMedium { get; set; }    public Solution Solution { get; set; }    public Hold Hold { get; set; }}我知道這ViewModel與原始 POCO 類相同,但我只想在端點的控制器中使用一些 LINQ 對其進行測試。但是,我立即偶然發現了幾個問題。例如,所有 POCO 類都添加到我們的DBContext類中,但我如何ViewModel將其鏈接到它呢?這還需要嗎?當我嘗試使用剛剛創建的 ViewModel 作為模型和我們的 DbContext 作為數據上下文類來構建 API 控制器時,我收到以下錯誤:There was an error running the selected code generation: 'Could not add Model type MyProject.API.Viewmodels.MediumViewModel' to DbContext 'MyProject.MyDbContextClass'. Please make sure that 'MyProject.MyDbContextClass' has a DbSet property for 'MyProject.API.Viewmodels.MediumViewModel'處理這個問題的最佳方法是什么?我已經閱讀了一些關于AutoMapper但我不想使用另一個庫來實現這一目標的內容。在 API 控制器中,我像這樣使用 DbContext:    public class MediaController : TrsBaseController    {        public MediaController(MyDbContext context)            : base(context)        {        }使用 a 時ViewModel,我還可以使用DbContext上面的還是應該以不同的方式實現它?我環顧四周尋找關于這個問題的好教程,但我想我在谷歌上搜索了錯誤的關鍵字,因為我找不到很多教程(這些教程也是 .NET CORE 2 的最新版本)。
查看完整描述

1 回答

  • 1 回答
  • 0 關注
  • 155 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號