我正在尝试为我的网站创建一个历史页面/表,当用户完成锻炼时,当前用户的锻炼表会在完成时删除锻炼信息(它已经在运行),并且历史表会用相同的字段+ DateTime更新,以便用户可以看到他们之前完成的锻炼。
目前,我对如何实现这一点感到困惑。我当前在Controller中的"complete“函数如下所示:
[HttpPost, ActionName("Complete")]
[ValidateAntiForgeryToken]
public ActionResult CompleteConfirmed(int id)
{
UserCurrWorkout userCurrWorkout = db.UserCurrWorkouts.Find(id);
db.UserCurrWorkouts.Remove(userCurrWorkout);
db.SaveChanges();
return RedirectToAction("Index");
}
这只是一个CRUD代码,用于根据ID删除表中的信息。我希望添加的内容非常简单,如下所示:
var oldWorkouts = new UserWorkoutHistory { UserId = model.UserId, UserOldWorkout = model.UserActiveWorkout };
db.UserWorkoutHistories.Add(oldWorkouts);
就在db.UserCurrWorkouts.Remove
代码的上面。我当前锻炼数据库的“模型”在函数中无法识别,然而,除非有更好的方法,否则如何识别它是我的主要问题。
任何信息或提示都将不胜感激!让我知道,如果你想看到任何其他代码,可能会带来我的问题清晰!
编辑:这是UserCurrWorkout模型:
namespace Powerlevel.Models
{
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.Spatial;
[Table("UserCurrWorkout")]
public partial class UserCurrWorkout
{
[Key]
public int UCWId { get; set; }
public int UserId { get; set; }
public int UserActiveWorkout { get; set; }
public virtual User User { get; set; }
public virtual WorkoutExercise WorkoutExercise { get; set; }
}
}
和UserWorkoutHistory模型:
namespace Powerlevel.Models
{
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.Spatial;
[Table("UserWorkoutHistory")]
public partial class UserWorkoutHistory
{
[Key]
public int UWHId { get; set; }
private DateTime Date = DateTime.Now;
public DateTime CurrentTime
{
get { return Date; }
set { Date = value; }
}
public int UserId { get; set; }
public int UserOldWorkout { get; set; }
public virtual User User { get; set; }
public virtual WorkoutExercise WorkoutExercise { get; set; }
}
}
发布于 2019-04-10 04:05:32
如果我没弄错你的意思,我想这就是你需要的:
[HttpPost, ActionName("Complete")]
[ValidateAntiForgeryToken]
public ActionResult CompleteConfirmed(int id)
{
UserCurrWorkout userCurrWorkout = db.UserCurrWorkouts.Find(id);
var oldWorkouts = new UserWorkoutHistory { UserId = userCurrWorkout.UserId, UserOldWorkout = userCurrWorkout.UserActiveWorkout };
db.UserWorkoutHistories.Add(oldWorkouts);
db.UserCurrWorkouts.Remove(userCurrWorkout);
db.SaveChanges();
return RedirectToAction("Index");
}
更新:还必须在此行中指定oldWorkouts
的外键WorkoutExercise_LinkId
:
var oldWorkouts = new UserWorkoutHistory { UserId = userCurrWorkout.UserId, UserOldWorkout = userCurrWorkout.UserActiveWorkout , WorkoutExerciseId = 'a valid key from WorkoutExercise table'};
更新2:虽然,首先您需要在UserCurrWorkout
实体中定义一个外键,并避免EF在数据库中生成实体中不存在的fk列:
[Table("UserCurrWorkout")]
public partial class UserCurrWorkout
{
[Key]
public int UCWId { get; set; }
public int UserId { get; set; }
public int UserActiveWorkout { get; set; }
public virtual User User { get; set; }
public int WorkoutExerciseId { get; set; } // The explicit foreign key
public virtual WorkoutExercise WorkoutExercise { get; set; }
}
https://stackoverflow.com/questions/55599473
复制相似问题