为了账号安全,请及时绑定邮箱和手机立即绑定

将 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 关注
  • 138 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信