asp.net-mvc – ASP.NET MVC – 服务层 – 业务层 – 数据层(EF) – SQL DB ::数
|
我计划使用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 – 如何从内容页面访问母版页控件
- ASP.NET会话ID在浏览器选项卡之间共享
- asp.net-mvc-3 – mvc3剃刀条件包装器div
- asp.net – 触发OWIN cookie中间件设置为被动身份验证模式的
- ASP.NET用户名更改
- asp.net-mvc – 如何在ASP.NET WebApi帮助页面中记录可选的
- asp.net-mvc – 为ASP.NET MVC Action Links添加rel和title
- asp.net – 隐藏字段vs viewstate
- .net – 如何使用SmtpClient.SendAsync发送带有附件的电子邮
- asp.net – 通过javascript禁止文本框中的退格
