我正在尝试更新我的一个实体中的列表。这是我在做什么:对未注册实体的更改
var loggedInUserId = User.Identity.GetUserId();
var applicationDbContext = new ApplicationDbContext();
var x = Request["groupCode"];
var affectedGroup = db.StudentGroups.FirstOrDefault(s => s.Code == x);
var groupId = affectedGroup.Id;
if (affectedGroup != null)
{
if (affectedGroup.StudentIds == null)
{
affectedGroup.StudentIds = new List<string>();
}
if (affectedGroup.StudentIds.Contains(loggedInUserId))
{
TempData["ErrorMessage"] = "You are already a member of this group";
}
else
{
affectedGroup.StudentIds.Add(loggedInUserId);
db.SaveChanges();
}
}
这里是我的StudentGroup型号:
public class StudentGroup
{
public int Id { get; set; }
[Required(ErrorMessage = "The group must have a name.")]
public string Name { get; set; }
[Required(ErrorMessage = "The code is required.")]
public string Code { get;set; }
public string Description { get; set; }
[Display(Name="Members")]
public IList<string> StudentIds { get; set; }
}
的问题是,StudentIds总是空,当我在调试器中运行,即使当我通过步骤它,Id确实被添加。 我是ASP.NET MVC的新手,所以请牢记这一点。
你应该使用处置您的上下文的'使用'块 – DLeh
组代码存在,它通过POST从表单中获取。我确定它与我的测试数据相符。 – FreHu
它实际上是一个多对多的关系,我以前在存储实际用户时遇到了一些问题。我认为这与模型在不同的上下文中有关系(学生是基于默认情况下的IdentityUser,当我创建项目时已经设置了该模型,而StudentGroup是在我创建的上下文中),但是我没有记住问题的确切细节。正如我所说,我是新手,只是想让它工作,然后我可以让它工作正确。 – FreHu