2010-10-26 66 views
4

业务应用程序开发人员应该注意的ADO.NET Entity Framework 4.0的最重要限制是什么?实体框架的最重要限制

我已经在我的一些宠物项目中使用过它,它看起来非常有效,但我担心在构建大型,更复杂的数据驱动业务应用程序时遇到的问题。我特别感兴趣的是如何选择使用Entity Framework来访问我的数据可能会限制构建我的项目时可能需要使用的不同设计模式/体系结构。

因为我在考虑在未来的项目中使用实体框架,所以我只关心实体框架当前版本的局限性。

回答

3

您需要了解数据库喋喋不休。坚持一个完整的对象图并不是一个好主意。在进行复杂的查询和更新时,EF会一直尝试更新插入的对象。 对此的解决方案是在存储过程中通过复杂的查询和更新逻辑,并通过在单个数据库调用中通过XML /字符串等传递对象图。

在进行设计优先或数据库优先建模时,EF的另一个问题是实体类本身通过继承与框架耦合。有几个策略围绕着这个,我有一篇博客文章,允许使用POCO的同时提取一个接口,同时进行嘲笑,这非常方便。

Getting the entity framework to Generate an interface for Mocking

+0

不错的博客文章 - 但是你知道有一个T4模板,它会自动生成一个模拟ctx为你(与你的博客相同的东西) – RPM1984 2010-10-27 22:39:21

+0

好的一个。你有链接? – Slappy 2010-10-28 01:47:14

+0

http://visualstudiogallery.msdn.microsoft.com/en-us/a850e686-df08-4245-b0bb-5872654285c9这很棒。我用它来模拟OC/DC,然后使用DI将我的内存注入到我的内存回购中。尼斯。 – RPM1984 2010-10-28 02:58:37

2

这应该可能是CWiki,但是我会从容应对。

良好EF实现的关键是正确的域建模(TPT用于灵活性,用于性能的TPH,继承),持久性逻辑(存储库模式,POCO,依赖注入)的抽象以及知道何时使用用于数据库密集型任务的存储过程。

如果你想进入本质,我发现EF的唯一限制是缺乏枚举映射支持(尽管这应该尽快解决)。

国际海事组织,其限制并非真正在产品中,而是因为开发商缺乏对常见建筑原则和指导方针的遵守。

+0

不,限制通常在产品中 - 设计准则和原则几乎总是解决语言/框架中的限制。 *总是*需要准则/原则,因为总是存在限制 - 但这并不意味着限制是不存在的。 – 2011-02-28 17:22:05