我正在尝试同时学习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; }
}
然后我在models文件夹中创建了一个类,其中包含名为Task的确切定义。
我正在尝试使用以下代码填充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阅读器和循环来填充模型,但我认为必须有更好的方法。
答案 0 :(得分:0)
您的问题在这里:
TaskList task_list = new TaskList();
task_list = BGDB.prBGGetYourTasks(HttpContext.Current.User.Identity.Name).ToList
您正在尝试将List<Task>
分配给TaskList
。继承不会这样。
List<Task> tasks = new List<Task>();
TaskList taskList = new TaskList();
//This will compile
tasks = taskList;
//This will not
taskList = tasks;
您可能希望完全摆脱TaskList
并使用List<Task>
,但您似乎并没有向其中添加任何新的行为成员。
答案 1 :(得分:0)
我的猜测是你的数据模型中的函数导入被设置为返回一个ComplexTypes的集合,而不是你想要的实体类型。
修复。双击数据模型中的函数(存储过程) - &gt;功能导入。在对话框中,您将找到标题为“返回集合”的部分。从下拉列表实体中选择您的实体类型:单击确定。这一次也使我感到沮丧。
希望这有助于寻找答案的人。真的希望原帖可以找到适合他们的工作!