我想更好地学习C#和MVC,并且正在开发一个项目来帮助我这样做。作为这一部分,我尝试创建一个用户注册并登录到我的网站。我正在使用实体框架,并试图遵循我所知道或遇到的所有最佳实践,并且我认为我有点混淆了几件事情。从ViewModel传递数据到DataModel
我已经创建了一个表示层,一个DataLayer和一个BusinessLayer。这基本上给我留下了一个问题,因为我不能做显而易见的事情,因为这是一个循环依赖,因为无论如何,这是一件坏事,我想知道我是否正在以正确的方式进行。
在我的表示层我已经把我的ViewModel和控制器。
在我的DataLayer是我所有的EF类和模型。
我也有一个BusinessLayer但在这里什么都没有,但(没有100%什么应该在这里还)
我表示层显然是依赖于我的数据层,但什么是从传递数据的最佳方式我的ViewModel在PresentationLayer中返回DataLayer中的数据模型来更新数据库?在View中,用户将基本上输入登录信息,然后需要将其发送到DataLayer中的实体,然后使用Entities EF访问数据库。我不能添加我的表示层作为依赖到我的DataLayer,因为这会创建一个循环依赖。
我已阅读过有关automapper的内容,但不确定这是否正确,或者该逻辑应该放在哪里,应该放在Model还是单独的类中,以及放在哪个Layer中?我也尝试过使用Unity和依赖注入来做一些事情,但是我认为现在混淆了实际需要的内容,并将我正在阅读的内容应用于我实际正在尝试做的事情。我可以通过将所有内容放在一个项目中来实现这一目标,但显然我正在从设计的角度来做这件事。
注意这个类是使用依赖注入为好。在那里有许多好的nuget包。我喜欢的是SimpleInjector。这将意味着你不是'新兴'服务,而是他们被注入,这将导致更多的可测试代码 –
我同意。我使用Autofac,但您可以使用任何IoC容器;他们都是伟大的容器。上面的代码是单元可测试的 - [这里](https://github.com/WinLwinOoNet/AspNetMvcActiveDirectoryOwin/blob/master/src/Presentation/AspNetMvcActiveDirectoryOwin.Web/Areas/Administration/Controllers/UsersController.cs#L96)是实现,和[这里](https://github.com/WinLwinOoNet/AspNetMvcActiveDirectoryOwin/blob/master/src/Tests/AspNetMvcActiveDirectoryOwin.Web.Tests/Controllers/UserControllerTests.cs#L308)是单元测试。 – Win
是的,您的样品很棒......只是指出了使用依赖注入(DI)和控制反转(IoC) –