asp.net-mvc – ASP.NET MVC – 服务层 – 业务层 – 数据层(EF)
我计划使用ASP.NET MVC作为UI层创建3层应用程序,将WCF作为业务层,使用SQL DB作为数据库.
我的业务层将分为服务层(WCF),业务层(业务逻辑,业务模型),数据层(实体框架 – 数据库优先). >数据层将使用实体框架的实体实现存储库方法,如Get,GetById,Update,Insert. 虽然上面提到的方法很常见,但我仍然希望确认这是一个好的设计吗? 我真正的问题是关于层之间的数据传输(UI(MVC) – 服务(WCF) – 业务 – 数据层) 假设我已启动GET操作以从数据库中检索帐户及其特征.在数据库中,它表示为两个不同的表. >帐户 – > AccountNumber,Name,Type 在Datalayer中,我想编写一个方法来获取给定的这两个表记录 我的商业模式有两个名为Account和AccountTraits的类. 喜欢, public class Account { string AccountNumber; List<AccountTraits> Traits; } 现在,如果我想用这些数据填充这些Domain对象,我可以在我的数据层中使用类似下面的EF查询. public IEnumerable<Account> GetAccountAndItsTraits(string AccountNumber) { var query = from a in db.Accounts select new Accounts() { AccountName = a.AccountName,Traits = from t in a.AccountTraits .... return query; } >这是从数据层(EF)填充商业模式POCO的仪式方法吗? 如果你能对这些主题有所了解,那将是很棒的. 谢谢! 解决方法
我绝对不会纯粹基于架构使用WCF,除非你特别需要它提供的功能.即某些运输/协助以支持某些企业对企业的需求. MVC现在具有WebAPI,它基本上与从WCF迁移的内容相同,并且更易于使用,并且可以满足您的架构需求,而不会头痛.
另外,我甚至不会使用WebAPI,除非我暴露了一些我知道肯定会在我的应用程序之外使用的东西.如果此服务层仅由此MVC应用程序使用,那么我将废除它.您仍然可以拥有业务层数据层,并在没有它的情况下保持关注点的分离.这只是我自己的看法. 通常我会使用View Models,它是为视图定制的模型.它们允许我独立地重构View或数据库,只需要更改数据转换代码.即数据库字段更改可能只需要在查询中进行调整,并且ViewModel保持不变,因此使用该视图模型的所有视图保持不变.几乎与您查询和将查询中的实体转换为新帐户的方式相同,除了我将我的AccountVM命名为视图模型(专门用于视图的模型) 我个人从我的控制器中调用这些类型的数据查询/转换方法.然后,控制器将AccountVM或集合传递给View(vm),其中vm是持有AccountVM或集合的变量的名称. 这就是我如何将数据从DB获取到View.无论如何,EF实体类和VM类通常非常相似,有时相同.我觉得中间业务实体类太过类似于其中一个,以确保额外的类和额外的复制. 所以在我看来回答你的几个问题: 2此GetAccountAndItsTraits是从Controller调用的,View是基于您的业务poco(或我称之为ViewModel).因此,业务层的返回与模型所期望的匹配.我这里没有服务层.但是,我可能会有一些专门用于将EF实体转换为View Models的方法,这将在调用业务模型函数之后发生.换句话说,业务模型将返回EF实体,然后映射函数会将这些实体映射到该情况下所需的任何视图模型,因为您可能有许多使用相同业务方法的视图模型和视图.我使用EF Code First,所以我的实体类已经非常接近POCO,因此它不会冒犯我泄漏到其他层. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – IF运算符与If之间的评估差异,然后,否则
- asp.net-mvc-3 – MVC 3 WebGrid – 可以进行内联编辑吗?
- asp.net-mvc3 EditorFor模板名称问题
- asp.net – 当usercontrol变得可见时执行javascript
- asp.net – RequiredFieldValidator必须单击两次
- ASP.NET:开始<%%>的'#'是什么意思?
- 详解Asp.net web.config customErrors 如何设置
- asp.net – 在剃刀中等同于End / Response.End?
- asp.net核心 – ViewData是ASP.NET 5(核心)的ViewBag的新标
- asp.net-mvc-4 – ASP.NET MVC 4中的单页面应用程序路由
- asp.net-mvc – 在SignalR Core中更改全局设置配
- ASP.NET中的URL重写
- 从ASP.Net MVC访问Active Directory使用C#
- asp.net-web-api – 在ASP.NET Web API控制器的n
- asp.net-mvc – ASP.NET MVC 6中的文件IO Close(
- ASP.NET MVC 2在部分视图中禁用浏览器后退按钮的
- asp.net-mvc – MVC安装需要?永远
- asp.net 4.5 webforms模型绑定:支持客户端验证?
- asp.net-mvc – 什么是ASP.NET MVC的验证选项
- .net – 动态创建的控件未触发事件处理程序