我知道EF4不支持用户定义的表类型(尚未)。我需要编写一个查询,它接受一对<product_code, quantity>
的列表,并根据{{1}为每个传递的product_code
返回一个记录集price
和product_code
}。 EF4的最佳选择是什么?在数据库中计算得到的价格相当复杂,并且有很多产品,这意味着大多数操作都应该在服务器端发生。 (例如,我无法首先从服务器获取完整的价格列表,然后过滤到我在客户端上需要的产品。我也无法将数量应用于客户端上的计算,必须传递给服务器并进行处理那里)。欢迎任何想法。
答案 0 :(得分:2)
我认为你大多回答了你的问题。计算必须在数据库服务器上完成,你只想得到结果,不是吗?如果您使用的是SQL Server 2008,则可以创建接受table valued parameter的存储过程。现在,您可以directly using ADO.NET或使用EF context.ExecuteStoreQuery
调用此程序,然后使用DataTable
将SqlParameter
传递给SqlDbType.Structured
。
如果您不使用SQL Server 2008,则需要存储过程,其中一个大的nvarchar参数将整个列表作为逗号分隔的字符串传递。您的存储过程将首先parse this list到临时表,然后以与表值参数相同的方式处理计算。