我有一个包含一组存储过程的现有数据库。我正在重新设计应用程序层而不更改数据库对象。我遇到的困难之一是有许多存储过程彼此相似,因为它们查询相同的表但返回不同的列组合。
我既不能返回部分填充的实体,也无法找到使用Entity Framework 4.1(和SQL Server 2008 R2)从存储过程返回匿名类型的方法。这迫使我为每个存储过程定义太多复杂类型,尽管基础表结构是相同的。
我的问题是:
请建议最小化实体/复杂类型数量的解决方案,这些实体/复杂类型可以使用EF实现,而无需更改数据库对象。
此外,是否可以返回部分填充的实体?这将使我能够重用实体。我不打算使用对象跟踪功能。
我们如何从存储过程输出中返回匿名类型?这对我来说也不错,因为在大多数情况下我会以JSON格式将数据返回给客户端
由于
答案 0 :(得分:2)
您将无法返回匿名类型 - 这些通常仅限于它们在其中定义的方法的范围。
本身无法返回部分填充类型 - 但您可以这样做:
为了从存储过程中获取返回值,您将无法避免拥有大量复杂类型 - 但是您将把它们锁定在数据库层中,它们不会“泄漏” “进入你的整个申请。
答案 1 :(得分:0)
只需使用 System.Data.DataTable 就像过去一样。