UDT作为EF4查询中的参数

时间:2011-05-21 19:50:19

标签: sql-server entity-framework sql-server-2008 entity-framework-4

我知道EF4不支持用户定义的类型(尚未)。我需要编写一个查询,它接受一对<product_code, quantity>的列表,并根据{{1}为每个传递的product_code返回一个记录集priceproduct_code }。 EF4的最佳选择是什么?在数据库中计算得到的价格相当复杂,并且有很多产品,这意味着大多数操作都应该在服务器端发生。 (例如,我无法首先从服务器获取完整的价格列表,然后过滤到我在客户端上需要的产品。我也无法将数量应用于客户端上的计算,必须传递给服务器并进行处理那里)。欢迎任何想法。

1 个答案:

答案 0 :(得分:2)

我认为你大多回答了你的问题。计算必须在数据库服务器上完成,你只想得到结果,不是吗?如果您使用的是SQL Server 2008,则可以创建接受table valued parameter的存储过程。现在,您可以directly using ADO.NET或使用EF context.ExecuteStoreQuery调用此程序,然后使用DataTableSqlParameter传递给SqlDbType.Structured

如果您不使用SQL Server 2008,则需要存储过程,其中一个大的nvarchar参数将整个列表作为逗号分隔的字符串传递。您的存储过程将首先parse this list到临时表,然后以与表值参数相同的方式处理计算。