0

我正在尝试同时学习 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 阅读器和循环来填充模型,但我认为必须有更好的方法。

4

2 回答 2

0

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

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

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

于 2014-01-07T22:17:19.977 回答
0

你的问题在这里:

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

您正在尝试将 a 分配List<Task>给 a TaskList。继承不能以这种方式工作。

List<Task> tasks = new List<Task>();
TaskList taskList = new TaskList();

//This will compile
tasks = taskList;

//This will not
taskList = tasks;

您可能想完全摆脱TaskList并只使用List<Task>,看起来您并没有向它添加任何新的行为成员。

于 2013-09-12T03:03:59.620 回答