【问题标题】:How to convert result from sql stored procedure into a list如何将sql存储过程的结果转换为列表
【发布时间】:2014-01-08 06:17:19
【问题描述】:

我正在尝试同时学习 EF、C# 和 MVC,所以如果这有点基础,我深表歉意。

我正在尝试将结果集从 SQL Server 存储过程获取到模型中。

我创建了一个 EDMX 文件并导入了存储过程,结果集存在于一个 cs 文件中 - 见下文。

public partial class prBGGetYourTasks_Result
{
    public int CompanyTaskID { get; set; }
    public int TaskID { get; set; }
    public string TaskName { get; set; }
    public string TaskDescription { get; set; }
    public System.DateTime StartDate { get; set; }
    public System.DateTime EndDate { get; set; }
    public string TimeLeft { get; set; }
    public string Status { get; set; }
}

然后我在模型文件夹中创建了一个类,其确切定义称为任务。

我正在尝试使用以下代码用 SP 的结果填充模型:

public class TaskList : List<Task> {
    public TaskList GetTasks()
        {
            BGEntities BGDB = new BGEntities();
            TaskList task_list = new TaskList();
            task_list = BGDB.prBGGetYourTasks(HttpContext.Current.User.Identity.Name).ToList();
            return task_list;
    }
}

但是它即将出现“无法将类型'Genric.List 隐式转换为'Task.TaskList'。我尝试尝试将结果类型的变量转换为结果集类型。

如果我也走错了路,请告知。

我以前使用 sql 阅读器和循环来填充模型,但我认为必须有更好的方法。

【问题讨论】:

    标签: sql-server entity-framework stored-procedures edmx


    【解决方案1】:

    您的问题在这里:

    TaskList task_list = new TaskList();
    task_list = BGDB.prBGGetYourTasks(HttpContext.Current.User.Identity.Name).ToList
    

    您正在尝试将List&lt;Task&gt; 分配给TaskList。继承不能以这种方式工作。

    List<Task> tasks = new List<Task>();
    TaskList taskList = new TaskList();
    
    //This will compile
    tasks = taskList;
    
    //This will not
    taskList = tasks;
    

    你可能想完全摆脱TaskList,而只使用List&lt;Task&gt;,看起来你并没有向它添加任何新的行为成员。

    【讨论】:

    • 除了回答:如果你想将你的函数添加到预定义的类(GetTasks)然后使用"Extension"
    【解决方案2】:

    我的猜测是您在数据模型中的函数导入设置为返回 ComplexTypes 的集合,而不是您想要的实体类型。

    修复。在 Data Model-> Function Imports 中双击您的函数(存储过程)。在对话框中,您将找到一个标题为“返回集合”的部分。从下拉实体中选择您的实体类型:。单击确定。这件事也让我沮丧了一段时间。

    希望这可以帮助寻找答案的人。真的希望原始帖子找到了适合他们的解决方法!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-07
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 2020-10-12
      • 1970-01-01
      • 2013-10-10
      相关资源
      最近更新 更多