c# - 将数据从视图模型添加到模型
问题描述
所以这是我的控制器。ViewModel 包含成员的 PIN 和事件 ID。现在我想找出哪个事件与 Id 相关联,以及哪个成员与 Pin 相关联。获得该信息后,我想将此事件与输入了 PIN 的成员相关联。我将在下面添加成员类和事件类。(这是多对多的关系)我只是对如何将事件添加到成员表感到困惑
[HttpPost]
public ActionResult SignUp(MemberEventViewModel Vmodel) //signup action
{
var MemberinDB = _context.Members.Where(c => c.PIN == Vmodel.Member.PIN);
var EventinDB = _context.Events.Where(c => c.Id == Vmodel.Events.Id);
_context.Members.Add(EventinDB);
_context.SaveChanges();
}
会员等级
public class Member
{
public int Id { get; set; }
[Required]
[MaxLength(4, ErrorMessage = "PIN must be 4 numbers long"), MinLength(4, ErrorMessage = "PIN must be 4 numbers long")]
public string PIN { get; set; }
[Required]
[Display(Name ="First Name")]
public string FirstName { get; set; }
[Required]
[Display(Name = "Last Name")]
public string LastName { get; set; }
[Display(Name = "Date of Birth")]
public DateTime? Birthdate { get; set; }
public virtual ICollection<Event> Events { get; set; }
}
事件类
public class Event
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
[Required]
[Display(Name = "Date")]
public DateTime? EventDate { get; set; }
[Required]
[Display(Name = "Start Time")]
public TimeSpan EventStartTime { get; set; }
[Required]
[Display(Name = "End Time")]
public TimeSpan EventEndTime { get; set; }
public int EventTotalTime{ get; set; }
public virtual ICollection<Member> Members { get; set; }
}
解决方案
使用导航属性关联您的新关系。
var MemberinDB = _context.Members.Include(c => c.Events).Single(c => c.PIN == Vmodel.Member.PIN);
if(MemberinDB.Events.Any(e => x.Id == VModel.Event.Id))
return; // Member and event already associated.
var EventinDB = _context.Events.Single(c => c.Id == Vmodel.Event.Id);
MemberInDB.Events.Add(EventinDB);
_context.SaveChanges();
这将加载成员并包括关联的事件。您的成员和事件关系是多对多的,因此您可以从成员添加事件或从事件添加成员。上面的示例检查该事件是否未被添加,如果没有,则检索它并将其添加到成员中。
您的视图模型意味着一个成员有事件,而不是传递一个视图模型来表示一个新的成员事件关联。如果您正在传递一个包含成员及其所有事件(包括现有关联和新关联)的视图模型,那么您可能需要一些额外的逻辑来识别可能已添加或删除哪些事件关联来处理这些事件。
推荐阅读
- html - 表格标题未以 100% 宽度显示列
- r - 如何从R中的主数据框中减去一些参与者数据
- python - Matplotlib 条形图切出条形(并且不显示所有值)
- python - pandas - 解析 MySql 结果
- html - 附加图像时如何使引导程序的输入组中的边框保持一致?
- spss - SPSS 中的嵌套宏和以计算为条件的 !IF-!THEN 命令
- r - 如何在 R 中创建简单的时间戳可视化
- c# - 检查输入是否为 100 的因子在 C# 中并不总是正常工作
- reactjs - useState 设置方法和状态在 onClick 函数中没有改变
- outlook-addin - Outlook 365,检索 MAPI 会话时出现错误 8000FFFF(意外)