【问题标题】:Return object from Stored procedure in Linq从 Linq 中的存储过程返回对象
【发布时间】:2016-11-08 13:29:28
【问题描述】:

我有一个需要更改为存储过程的 linq 表达式。 此 linq 表达式从 dbml(表)返回一个已定义的对象。

问题是当我调用我的存储过程(比如说 SP_test)时,它返回一个 SP_testResult 数组,我希望它返回一个已定义的表作为对象。

如果我在 dbml 中更改 SP 的返回类型,当我检查结果时,它不会返回任何内容,但如果我自己运行 SP,它会返回一个集合。

有没有办法定义返回的类型?说 SP_test 返回一个 Client 对象? (这是我的 dbml 模型中的一个表)还是应该将 SP_testResult 映射到一个 Client 对象中?

我想从这里开始:

this.bookings = db.Bookings
        .FilterUser(_main.Identity.GetUser())
        .Where(x => x.ProductId == PackageContent.ProductId && x.CampaignId == PackageContent.CampaignId && x.ClientId == PackageContent.ClientId)
        .Where(x => Math.Abs((x.DateCreated - PackageContent.DateCreated).Days) < daysRange)
        .ToList()
        .Union(db.Bookings.Where(x => PackageContent.ExternCode == x.BussinessRefernce))
        .OrderBy(x => x.DateCreated);

到这里:

this.bookings = db.SP_SearchSimilarBookings.toList();

在这两种情况下,this.bookings 都是 Bookings 类的数组。

【问题讨论】:

  • 请出示您的代码。
  • codeE 在哪里? !
  • 对不起,我添加了代码
  • "我希望它返回一个已定义的表作为对象。" “将表定义为对象”是什么意思?您的预期输出是什么?
  • 您需要使用 SqlDataReader 或其他工具将您的 SP 中的结果映射到您的自定义对象中。

标签: c# sql-server linq asp.net-mvc-4 stored-procedures


【解决方案1】:

也许考虑做这样的事情来将你的 SP 结果映射到你的自定义对象:

//create your connection string
string Conn = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;

using (SqlConnection connection = new SqlConnection(Conn))
{
    //add your SP to the SqlCommand
    SqlCommand cmd = new SqlCommand("dbo.MyProcedure", connection);
    cmd.CommandType = CommandType.StoredProcedure;

    SqlParameter myParam = new SqlParameter("@YourParam", //Your SqlDbType);
    myParam.Value = //your value;
    cmd.Parameters.Add(myParam);

    //Add more parameters if applicable...

    SqlDataReader dr = command.ExecuteReader();

    if (dr.HasRows)
    {
        while (dr.Read())
        {
            //map to your custom object here by instantiating one and mapping 
            //the SqlDataReader columns to your custom object properties.
        }
    }
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-18
    相关资源
    最近更新 更多