Entity framework 4 EF 4.0和存储过程:返回业务对象还是复杂类型?

Entity framework 4 EF 4.0和存储过程:返回业务对象还是复杂类型?,entity-framework-4,Entity Framework 4,我是EF4新手,我想知道在DAL中将EF与存储过程一起使用时,最好的方法是什么。到目前为止,我有两个选择: 选择1 使用EF4,我可以创建一个复杂类型,EF将映射存储过程中的结果。然后,我可以从DAL层返回这个复杂类型,然后在主应用层将其再次转换为自定义BLL对象。这个策略对我很有吸引力,因为我会依靠EF4 designer来构建管道,而不用我手动构建参数。它还使DAL独立,而不引用包含业务对象的程序集。我在这种方法中看到的主要问题是,我必须再次将复杂类型排序为BLL业务对象。不确定这将如何影响

我是EF4新手,我想知道在DAL中将EF与存储过程一起使用时,最好的方法是什么。到目前为止,我有两个选择:

选择1

使用EF4,我可以创建一个复杂类型,EF将映射存储过程中的结果。然后,我可以从DAL层返回这个复杂类型,然后在主应用层将其再次转换为自定义BLL对象。这个策略对我很有吸引力,因为我会依靠EF4 designer来构建管道,而不用我手动构建参数。它还使DAL独立,而不引用包含业务对象的程序集。我在这种方法中看到的主要问题是,我必须再次将复杂类型排序为BLL业务对象。不确定这将如何影响性能

选择2

具有包含BLL对象的DAL引用程序集,然后从DAL层返回BLL对象。我不确定这是否适合我。我必须手动创建存储过程参数,然后迭代DataReader来构建要返回的业务对象。这是可行的,但我宁愿让EF4设计器为我构建存储过程管道。此外,它似乎将DAL与BLL组装结合起来,我不确定这是否合适

希望您能就此提出一些意见和建议


谢谢

还有第三个选项-使您的业务对象成为实体。EF是从数据库中持久化和检索业务对象的工具,但您只需要将其作为数据访问层,并需要手动将其结果转换为业务对象。这就是你问题的全部根源