Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何管理实体的顺序?如何在具有某个ID的实体之后或之前添加实体?_Asp.net_Entity Framework - Fatal编程技术网

Asp.net 如何管理实体的顺序?如何在具有某个ID的实体之后或之前添加实体?

Asp.net 如何管理实体的顺序?如何在具有某个ID的实体之后或之前添加实体?,asp.net,entity-framework,Asp.net,Entity Framework,假设我有一个待办事项列表应用程序。您可以添加一些任务,将它们标记为“完成”,或将其上移或下移 托多利斯特: 任务1 任务2 任务3 任务4 现在我想添加一些新任务,比如说在Task1之后(因此它将位于第二位) 当我简单地_context.Tasks.Add()一个新的时,它将被保存为最后一个,因为EF不知道它应该是第二个 当然,我有一些函数,比如“.OrderBy()”,但是我应该使用什么值来进行排序呢?我如何告诉实体框架,将其作为数据库中的第二个 示例模型: public class Ta

假设我有一个待办事项列表应用程序。您可以添加一些任务,将它们标记为“完成”,或将其上移或下移

托多利斯特:

  • 任务1
  • 任务2
  • 任务3
  • 任务4
现在我想添加一些新任务,比如说在Task1之后(因此它将位于第二位)

当我简单地_context.Tasks.Add()一个新的时,它将被保存为最后一个,因为EF不知道它应该是第二个

当然,我有一些函数,比如“.OrderBy()”,但是我应该使用什么值来进行排序呢?我如何告诉实体框架,将其作为数据库中的第二个

示例模型:

public class TaskList
{
   public TaskList()
   {
      Tasks = new HashSet<Task>();
   }
   public int ID {get; set;}
   public virtual ICollection<Task> Tasks {get;set;}
}

public class Task
{
    public int ID {get;set;}
    public string Data {get;set;}
}
公共类任务列表
{
公共任务列表()
{
Tasks=newhashset();
}
公共int ID{get;set;}
公共虚拟ICollection任务{get;set;}
}
公开课任务
{
公共int ID{get;set;}
公共字符串数据{get;set;}
}

您应该创建一个“实际订单”列,以指示任务在列表中的顺序。这样,您可以更改任务的顺序,只需更新值即可。@jpgrassi我希望有更好的解决方案,但如果有必要,可以……不确定您正在寻找的更好的解决方案是什么。据我所知,您的任务列有一个自动递增Id,当您插入一个新的Id时,它会进入“列表”,但这是正确的行为。要控制任务的顺序,我看不到任何其他逻辑方法。如果您不想像建议的那样处理订单列,则必须手动分配Id,而不是自动递增