代码之家  ›  专栏  ›  技术社区  ›  markom

使用LINQ2SQL从存储过程返回匿名类型

  •  2
  • markom  · 技术社区  · 15 年前

    考虑以下存储过程:

    SELECT * FROM Customers;
    
    SELECT Customer.Id, Customer.Name, Order.Total, Order.DateOrdered
    FROM Customers INNER JOIN Orders ON Customers.Id = Orders.CustomerId;
    

    这个过程显然返回了两个结果集,我正试图用这个部分类方法检索它们:

    public partial class DBSproc : DataContext
    {
        [Function(Name = "dbo.spGetCustomersAndOrders")]
        [ResultType(typeof(Customer))]
        // What type should I use here for the second resultset?
        [ResultType(typeof(... what here? ...))] 
        public IMultipleResults GetCustomersAndOrders()
        {
            IExecuteResult result =
                this.ExecuteMethodCall(this,
                   ((MethodInfo)(MethodInfo.GetCurrentMethod())));
    
            return (IMultipleResults)(result.ReturnValue);
        }
    }
    

    我知道第一个结果集将映射到客户实体,但是第二个结果集呢?第二个是自定义选择,将多个表中的多个列组合在一起。我没有拥有这些财产的实体。

    我应该只为结果集创建一个虚拟实体吗?我希望我可以使用匿名类型来进行这种特殊的查询。

    谢谢。

    1 回复  |  直到 15 年前
        1
  •  0
  •   Joel Mueller    15 年前

    一般来说,只有当返回类型为“object”时,才能从方法返回匿名类型。然后,调用代码不知道匿名类型可能具有哪些属性,除非它使用反射。