您将如何在典型的业务层/数据访问层/存储过程中使用EF?

Eza*_*ade 3 entity-framework

每当我观看有关实体框架的演示时,演示者只需设置一些表并使用自动创建的代码存根执行插入,更新和删除,但从不显示任何存储过程的使用.在我看来,这是从客户端执行SQL.

根据我的经验,这不是特别好的做法,所以我假设我对实体框架的理解是错误的.

类似地,WCF RIA Services演示使用EF,并且演示总是相同的.任何人都可以了解如何在典型的业务层/数据访问层/存储过程中使用EF.

我觉得我很困惑,不应该!!

Mat*_*nen 6

从客户端执行SQL没有任何问题.当使用像EF这样的东西时,它可能导致的大多数(如果不是全部)问题实际上都不存在.例如:

  1. 客户端生成的SQL可能会导致运行时语法错 这不太可能,因为您的查询的描述主要在编译时检查(假设生成器本身不生成无效的SQL,这也不太可能)
  2. 客户端生成的SQL可能效率低下.具有查询缓存的现代数据库软件不是这样.EF以与查询缓存兼容的方式工作,即它一致地生成相同的SQL(只要您一致地使用相同的代码)并使用参数来变化数据.
  3. 客户端生成的SQL可能不安全(SQL注入和诸如此类).这全部由生成器处理,生成器使用值的参数,不会将用户输入插入查询本身.