我在我的新互联网Web应用程序中采用了EF(.NET 4.5的开箱即用)。
这个应用程序涉及相当多的数据库操作,并涉及大约30个或更多的表格。
我的观点是,这不是一个简单的学校项目,EF通常适用于大多数需求。
随着我进一步开发这个应用程序,我发现EF在适当/良好的数据库设计方面非常有限或具有限制性(尤其是在性能方面)
1)Include
我在查询部分遇到了Include功能。由于缺少包含设置,许多数据丢失。
我越放入这个东西,我就越担心一个简单的数据检索会在某些函数中得到比我需要的更多的东西。
2)验证
我正在采用Fluent Validation来满足这个需求,因为我喜欢访问者模式,其中不需要对数据代码本身进行直接代码更改。
但是,当我子类化时,我面临着更多的挑战,我需要解决能够遵守OOP简单内容的验证。我设法解决了它,尽管实现中存在更多复杂性和某些我真正不喜欢的东西。我相信这个子类验证问题在DataAnnotation中也会发生。
3)事务
现在,我需要整合适当的数据库事务控制,并发现EF缺少这一点,请纠正我如果我错了。
我曾经使用过企业组件(.NET中的COM+,很久以前),而且我无法找到EF中适当(或缺少)事务实现。
我仍在努力解决这个问题...
总结)
我意识到EF唯一帮助我的编码是数据/实体代码生成,这是许多其他工具/框架通用的功能。
我考虑放弃EF,回到EF之前的方法,采用存储过程,仍然是生成的表格类(但不是EF或DBML)。
我可以没有SQL LINQ,因为在过去的性能问题中,我遇到了许多挑战。
我喜欢你的意见,认为我应该坚持使用EF,除了这个ORM之外,这个ORM几乎根本没有实际工作。