【问题标题】:UDT as a parameter in EF4 queryUDT 作为 EF4 查询中的参数
【发布时间】:2011-08-30 08:31:59
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-23
    • 1970-01-01
    相关资源
    最近更新 更多