C# 重构fat控制器并在服务层中处理验证和日志记录
我目前有一个应用程序受Fat控制器的影响。我试图将业务逻辑拉入服务层,并希望澄清我的方法 为了提高模型误差,我计划使用如下所述的方法:-大约1/2的时间使用IValidationDictionary方法 但我看到在新版本的文档中没有讨论这种方法。在较新版本中,服务层部分中的验证将被完全删除 我希望这足以让我提出以下问题/验证我的方法:C# 重构fat控制器并在服务层中处理验证和日志记录,c#,entity-framework,asp.net-mvc-4,dto,business-logic,C#,Entity Framework,Asp.net Mvc 4,Dto,Business Logic,我目前有一个应用程序受Fat控制器的影响。我试图将业务逻辑拉入服务层,并希望澄清我的方法 为了提高模型误差,我计划使用如下所述的方法:-大约1/2的时间使用IValidationDictionary方法 但我看到在新版本的文档中没有讨论这种方法。在较新版本中,服务层部分中的验证将被完全删除 我希望这足以让我提出以下问题/验证我的方法: 我认为上面链接中的方法已经过时,不应该用于数据注释(可能会覆盖IsValid-这可能很幼稚,我还不完全理解验证ModelState.IsValid的工作流)。我的
如果一个视图可以直接绑定到一个实体,我是否应该创建一个DTO或视图模型来封装EF之外的业务逻辑验证?第二,在ViewModel上复制我的EF注释以在模型绑定时验证它们是否被普遍接受?这是一个有其利弊的好问题。一方面,由于视图与实体一一对应,因此无需拥有视图模型,另一方面,一致性始终是一种良好做法,因此创建视图模型可能是合理的,这样您就可以始终在那里查找业务规则,而不管实体是什么。此外,如果您有一个服务层,那么不管怎样,您都需要DTO。在任何一种情况下,您都应该只在一个位置放置注释以避免混淆,并且只有一种类型可以用作视图的模型并将被验证。如果视图可以直接绑定到实体,我是否仍应该创建DTO或视图模型来封装EF之外的业务逻辑验证?第二,在ViewModel上复制我的EF注释以在模型绑定时验证它们是否被普遍接受?这是一个有其利弊的好问题。一方面,由于视图与实体一一对应,因此无需拥有视图模型,另一方面,一致性始终是一个良好的实践,因此创建视图模型可能是合理的,这样您就可以始终在那里查找业务规则,而不管实体是什么