Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.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
C# 更新属性并将属性添加到数据库的控制器操作方法_C#_Asp.net_Asp.net Mvc_Entity Framework - Fatal编程技术网

C# 更新属性并将属性添加到数据库的控制器操作方法

C# 更新属性并将属性添加到数据库的控制器操作方法,c#,asp.net,asp.net-mvc,entity-framework,C#,Asp.net,Asp.net Mvc,Entity Framework,在使用entity framework的ASP.NET MVC应用程序中,我有一个编辑视图,其中我正在更新一个实体模型的某些属性。如果用户想要添加该类型的新属性,我想为其中一个属性设置一个“添加”按钮(但在不删除旧条目的情况下,我理解这需要这些类型属性的列表)。当我单击此添加按钮时,使用Ajax.ActionLink将从局部视图中检索一个新的Html.EditorForhelper,并将其添加到当前表单中 目前我的ActionMethod看起来只是在更新已经存在的字段,我可以添加什么样的逻辑来表

在使用entity framework的ASP.NET MVC应用程序中,我有一个编辑视图,其中我正在更新一个实体模型的某些属性。如果用户想要添加该类型的新属性,我想为其中一个属性设置一个“添加”按钮(但在不删除旧条目的情况下,我理解这需要这些类型属性的列表)。当我单击此添加按钮时,使用
Ajax.ActionLink
将从局部视图中检索一个新的
Html.EditorFor
helper,并将其添加到当前表单中

目前我的ActionMethod看起来只是在更新已经存在的字段,我可以添加什么样的逻辑来表示“如果这是一个新属性,那么db.add”

下面是我的方法现在的样子:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult TimeSeriesData(List<TimeSeriesData> List1)
{
    int empid = List1[0].EmployeeID;
    if (ModelState.IsValid)
    {
        foreach (TimeSeriesData ln in List1)
        {
            db.Entry(ln).State = EntityState.Modified;
        }
        db.SaveChanges();
        return RedirectToAction("Edit", new { id = empid });
    }
    return new EmptyResult();
}
请让我知道,如果你需要更多的澄清

编辑

或者问我问题的另一种方式是:如何检查数据库中是否已经存在该项

型号:

//summarized
class Employee {
 int EmployeeID {get;set;}
 List<TimeSeriesData> TimeSeriesData {get;set;}
}
class TimeSeriesData {
 int TimeSeriesDataID {get; set;}
 int EmployeeID {get;set;}
 string Value {get;set;}
 [ForeignKey("EmployeeID")]
 public Employee Employee { get; set; }
}
//总结
班级员工{
int EmployeeID{get;set;}
列表时间序列数据{get;set;}
}
类时间序列数据{
int TimeSeriesDataID{get;set;}
int EmployeeID{get;set;}
字符串值{get;set;}
[外籍钥匙(“员工ID”)]
公共雇员雇员{get;set;}
}

您的代码结构中存在问题。如果你注意到

 db.Entry(ln).State = EntityState.Modified;
您只是更新/编辑该特定实体,而不是添加属性。还有,我想你有点遗漏了一些逻辑

如果要为其添加另一个属性,则应将其放在单独的表中,并将其引用到父表的主键。这样,您就不会有任何问题为它添加另一个值

要回答第二个问题,可以使用上下文的
.Any
属性检查该项是否存在于数据库中。你可以有这样的东西:

var db = new Context();
if(!db.mytable.Any(m => m.field == value)){
    db.mytable.Add(value);
    db.SaveChanges();
}

如果您有任何问题,请随时提问。

找到了一些有用的链接,这里有一个这样的链接。。。标记为重复?是的,目前我正在更新/编辑,但这是我的问题,我如何添加逻辑,以便在同一操作方法中添加条件是否满足,或编辑条件是否满足。回答的第二部分很有帮助!我能看看你的模型吗?
var db = new Context();
if(!db.mytable.Any(m => m.field == value)){
    db.mytable.Add(value);
    db.SaveChanges();
}