C# 项目设计,我理解正确吗

C# 项目设计,我理解正确吗,c#,visual-studio,design-patterns,dto,entity-framework-core-2.1,C#,Visual Studio,Design Patterns,Dto,Entity Framework Core 2.1,我是一名软件开发人员,但总是从事“小型”项目/解决方案。 现在我正试图自己从头开始创建一个应用程序,只是为了与新的开发保持联系,学习新的东西。我正在尝试使用我从未使用过的所有东西。 因此,基本上这意味着我正在开发一个c#应用程序,使用EF core 2.1和SQL Server 我在网上读了很多文章,也学到了很多东西。但我仍然感到困惑,因为每天我都会发现一篇使用不同方法的新文章。 我想听听其他开发者对我到目前为止得到的东西的意见 首先,我习惯WinForms,所以现在我将使用它作为我的UI。只是

我是一名软件开发人员,但总是从事“小型”项目/解决方案。 现在我正试图自己从头开始创建一个应用程序,只是为了与新的开发保持联系,学习新的东西。我正在尝试使用我从未使用过的所有东西。
因此,基本上这意味着我正在开发一个c#应用程序,使用EF core 2.1和SQL Server 我在网上读了很多文章,也学到了很多东西。但我仍然感到困惑,因为每天我都会发现一篇使用不同方法的新文章。 我想听听其他开发者对我到目前为止得到的东西的意见

首先,我习惯WinForms,所以现在我将使用它作为我的UI。只是因为我可以用它快速得到结果。之后,我将尝试使用ASP.NET内核。 我还希望能够使用其他UI,并且仍然能够使用解决方案的其余部分。
我的解决方案中有几个项目:
1.数据:EF上下文、数据库集、迁移
2.模型:EF模型,用于EF上下文(仅限于POCO)
3.DTO:向UI公开的对象(同样是类和属性,仅此而已)
4.映射器:“DTO到模型”和“模型到DTO”
5.服务:静态类和静态方法/函数使用上述所有内容,包含逻辑。例如,GetCustomer使用EF上下文类读取数据库,获取模型,将其映射到DTO并返回它。
6.UI:绑定到DTO对象并为每个用户“操作”使用服务。

简而言之,就是这样。但我走对了吗?
我读了很多关于国际奥委会的书,但我还没有读到,但据我所知,这与上述内容“无关”
我确实有一个特定的问题:在WinForms中,使用IDataErrorInfo接口进行验证,对于绑定,我需要INotifyPropertyChanged逻辑。这个属于哪里?我会在我的DTO中说,但有人说DTO“不能有”任何逻辑。


我很抱歉提出了这么长的“问题”,但我将感谢您提供的任何信息,以确保我正确理解所有这些内容。

DTO通常不用于演示。它旨在发送原始数据,因此它们通常是哑对象,基本上只是一组属性设置器和获取器。
视图模型旨在发送到视图,视图模型还将数据发送回控制器。ViewModel有时负责表示逻辑。

DTO是数据传输对象的缩写。3中的不是DTO,而是VIewModels(专门为UI制作的模型)。它们可以实现IPropertyChanged,因为这是MVVM(模型-视图-视图-模型)模式的正常操作。谢谢,这很有意义。所以2应该是“数据模型”,3应该是“视图模型”或类似的东西。。。但想法仍然是一样的,一个“服务”层将数据模型转换为视图模型,包含所有应用程序逻辑。作为建议:我强烈建议您花一些时间阅读依赖注入,让5使用它,6配置IoC容器。