.net – 具有实体框架的存储库模式
|
存储库模式用于从使用的特定数据库和对象关系映射技术(如EF)抽象。因此,如果我决定这样做,我可以很容易地将Linq的实体框架映射替换为SQL。 但是当我使用EF我有我的实体类从模型 – 这是从该视觉图生成。如果我在我的存储库中使用这个生成的实体类,然后决定用其他东西替换EF,那么我将删除该视觉实体图,这也意味着也删除类吗? 我正在处理的一点是,我的存储库将依赖于实体框架,即数据访问层,因为它将使用由EF生成的类。 如何删除这种依赖关系? 还要注意,我使用EF主要是因为它能够从该可视图生成所有东西 – 我只是设计图表,让它为所有的外键生成数据库等。我非常喜欢,不想甚至考虑SQL命令。 解决方法存储库一直依赖于数据访问技术。这就是为什么人们正在使用存储库 – 将数据访问依赖性包装到单独的层。如果您决定更改数据访问技术(imho,那就像1%的机会),您将不得不创建新的存储库,实现与以前相同的接口。介绍资源库会增加一层新的复杂性。存储库有其优点和缺点。介绍他们只是因为“你以后可以改变数据访问方式”是一个坏的原因。不要因为可能发生的事情而设计您的应用程序。根据当前的实际要求(敏捷方式)设计应用程序,如果需要进行更改则重构代码,这是市场竞争的唯一途径。特性是销售您的SW不是其开放架构进行任何类型的更改(好的,有例外,但在这种情况下,开放架构是顶级要求)。 使用EF时,您可以选择如何创建实体: >使用cutom工具生成实体对象。这是为EDMX创建“代码后面”文件的默认方法。它是EFv1(.NET 3.5 SP1)中唯一可用的解决方案。 如果您期望数据访问技术在将来可以改变,可以使用POCO的第二种或第三种方法。在T4模板的情况下,您可以简单地复制生成的POCO或修改项目文件,以便删除EDMX文件后不会丢失它们。 如果您不确定第二或第三种方法适合您,请查看我们对这些问题的回答: > ADO.NET DbContext Generator vs. ADO.NET POCO Entity Generator 因为我以某种方式同意@ Patko的答案,你还应该检查Ayende’s blog.他写了几篇关于使用存储库和架构应用程序的帖子。他正在写关于NHibernate,但可以用EF进行类似的评估。唯一的区别是NHibernate提供更好的抽象,所以使用直接NHibernate的代码更好的可测试。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – Request.GetOwinContext在单元测试中返回nu
- asp.net-mvc – 允许操作和视图和模型的高度变化
- asp.net – 网站随时随地突破
- asp.net – 通过邮件发送wcf服务消费表单数据
- asp.net-mvc – ASP.NET MVC Action被调用两次
- 如何在ASP.NET Core 2.0中设置多个身份验证方案?
- asp.net-mvc – .NET MVC / Entity Framework应用程序中的内
- 实体框架 – 实体框架核心更新许多对许多
- asp.net-mvc – 如何在View中获取当前的url值
- ASP.NET微信公众号用于给指定OpenId用户发送红包
- asp.net-mvc – 在mvc中以MM / dd / YYYY格式验证
- ASP.NET Core WebApi将错误消息返回给AngularJS
- 使用Openiddict的ASP.NET Core 1.0 OAuth服务器
- asp.net-mvc – 在OS X 10.7.4上的MonoDevelop中
- asp.net-mvc – ASP.NET MVC:CSS文件存在时返回
- 在ASP.Net MVC中禁用会话状态每请求
- asp.net-mvc – ASP.NET MVC和Unity 1.2容器问题
- asp.net – 如何访问Microsoft.Owin.Security.xy
- asp.net – 配置部分不能在web.config文件中包含
- asp.net-mvc – 将布尔属性编辑器转换为MVC视图中
