Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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_Asp.net Mvc 3_Asp.net Mvc 4 - Fatal编程技术网

C# 从数据库中删除模型数据时,除了主键之外的所有内容都将被删除,如何删除所有内容?

C# 从数据库中删除模型数据时,除了主键之外的所有内容都将被删除,如何删除所有内容?,c#,asp.net,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 4,我正在开发一个列表框系统,操作员可以在用户机制中选择练习并删除它们。当前,当调用RemoveExercises时,它会删除与regimitem关联的所有数据,但会删除regimitemid。 对于RemoveExercises函数,我已经开始使用一个会话,这样RequestedExercises列表框就会随着所做的更改(练习的添加和删除)而更新。如果您对为什么不删除整个模型项有任何帮助或建议,我们将不胜感激。如下所示,表数据显示了“已删除”项目,但项目ID仍然保留 控制器(cs) [HttpG

我正在开发一个列表框系统,操作员可以在用户机制中选择练习并删除它们。当前,当调用
RemoveExercises
时,它会删除与
regimitem
关联的所有数据,但会删除
regimitemid
。 对于RemoveExercises函数,我已经开始使用一个会话,这样RequestedExercises列表框就会随着所做的更改(练习的添加和删除)而更新。如果您对为什么不删除整个模型项有任何帮助或建议,我们将不胜感激。如下所示,表数据显示了“已删除”项目,但项目ID仍然保留

控制器(cs)

[HttpGet]
public ActionResult ExerciseIndex(int-id,UserExerciseViewModel-vmodel)
{
User User=db.Users.Find(id);
UserExerciseViewModel=newuserexerciseviewmodel{AvailableExercises=GetAllExercises(),RequestedExercises=ChosenExercises(user,vmodel)};
model.UserID=user.UserID;
会话[“UserExerciseViewModel”]=模型;
返回视图(模型);
}
[HttpPost]
public ActionResult ExerciseIndex(UserExerciseViewModel模型,字符串添加,字符串删除,字符串发送,int-id,RegimeItem项)//,User-rUser)//int-userID
//public ActionResult ExerciseIndex(UserExerciseViewModel模型、字符串添加、字符串删除、字符串发送、int-id、regimitem项)
{
UserExerciseViewModel2=(UserExerciseViewModel)(会话[“UserExerciseViewModel”]);
model.RequestedExercises=model2.RequestedExercises;
model.AvailableExercises=model2.AvailableExercises;
如果(!string.IsNullOrEmpty(add))
附录练习(型号、id);
如果(!string.IsNullOrEmpty(删除))为else
RemoveExercises(型号,id);
返回重定向操作(“ExerciseIndex”,new{id=model2.UserID,vmodel=model2});
}
void RemoveExercises(UserExerciseViewModel模型,int-id)
{
var userExerciseViewModel=(userExerciseViewModel)(会话[“userExerciseViewModel]”);
foreach(在model.RequestedSelected中选择int)
{
如果(model.RequestedSelected!=null)
{
User User=db.Users.Find(id);
RegimeItem item=db.RegimeItems.Find(选中);//---删除与RegimeItem关联的用户
item.RegimeExercise=this.getAlleexercises().FirstOrDefault(i=>i.ExerciseID==selected);//--这将删除RegimeExercise
user.RegimeItems.Remove(项);
}
}
db.SaveChanges();
}
私有列表GetAllExercises()
{
返回db.Exercises.ToList();
}
私有列表选择练习(用户用户,用户练习视图模型)
{
返回db.Users
.Where(u=>u.UserID==user.UserID)
.选择多个(u=>u.RegimeItems)
.ToList();
}
型号(cs)

公共类用户
{
public int UserID{get;set;}
公共ICollection RegimeItems{get;set;}
公共用户()
{
this.RegimeItems=新列表();
} 
}
公共类注册
{
public int regimitemid{get;set;}
公共演习区域演习{get;set;}
}
视图模型(cs)

public类UserExerciseViewModel
{
可用公共列表执行{get;set;}
公共列表请求执行{get;set;}
public int?SelectedExercise{get;set;}
public int[]可用已选择{get;set;}
public int[]RequestedSelected{get;set;}
公共字符串SavedRequested{get;set;}
public int UserID{get;set;}
}

以下更改将修复此问题:

void RemoveExercises(UserExerciseViewModel model, int id)
{
    var userExerciseViewModel = (UserExerciseViewModel)(Session["UserExerciseViewModel"]);
    foreach (int selected in model.RequestedSelected)
    {
        if (model.RequestedSelected != null)
        {
            User user = db.Users.Find(id);
            RegimeItem item = db.RegimeItems.Find(selected);
            item.RegimeExercise = this.GetAllExercises().FirstOrDefault(i => i.ExerciseID == selected); //--this removes the regimeexercise
            user.RegimeItems.Remove(item); //deletes the user's regimeitem
            db.RegimeItems.Remove(item); //removes the regimeitem itself 
        }
    }
    db.SaveChanges();
}

谢谢,我已经更新了问题以显示表数据的一段,它删除了其他属性,但没有删除regimitemid。我为我糟糕的命名约定道歉,会话的路径对我自己来说也是相当混乱的。我想我的问题的答案在
RemoveExercises
中,因为我设法从中删除了其他模型属性。@Nilmag您的屏幕截图中是哪个表?它是RegimeItemI的表我将答案更改为您要找的。
 public class User
    {
        public int UserID { get; set; }
        public ICollection<RegimeItem> RegimeItems { get; set; }
        public User()
        {
            this.RegimeItems = new List<RegimeItem>();
        } 
    }
    public class RegimeItem
    {
        public int RegimeItemID { get; set; }
        public Exercise RegimeExercise { get; set; }
    }
public class UserExerciseViewModel
{
    public List<Exercise> AvailableExercises { get; set; }
    public List<RegimeItem> RequestedExercises { get; set; }
    public int? SelectedExercise { get; set; }
    public int[] AvailableSelected { get; set; }
    public int[] RequestedSelected { get; set; }
    public string SavedRequested { get; set; }
    public int UserID { get; set; }
}
void RemoveExercises(UserExerciseViewModel model, int id)
{
    var userExerciseViewModel = (UserExerciseViewModel)(Session["UserExerciseViewModel"]);
    foreach (int selected in model.RequestedSelected)
    {
        if (model.RequestedSelected != null)
        {
            User user = db.Users.Find(id);
            RegimeItem item = db.RegimeItems.Find(selected);
            item.RegimeExercise = this.GetAllExercises().FirstOrDefault(i => i.ExerciseID == selected); //--this removes the regimeexercise
            user.RegimeItems.Remove(item); //deletes the user's regimeitem
            db.RegimeItems.Remove(item); //removes the regimeitem itself 
        }
    }
    db.SaveChanges();
}