【发布时间】:2019-01-09 18:56:06
【问题描述】:
我正在开发一个 ASP.NET MVC 应用程序,用户可以登录/注册为管理员、个人帐户或公司。公司和个人模型具有其他对象列表的属性。我需要知道如何在个人登录列表中添加一些内容,并在数据库中更新它
我在控制器中处理的方法..
public ActionResult Create([Bind(Include = "Id,Name,Date,Location,StartTime,EndTime,IsPublic")] Event @event)
{
string currentUserId = User.Identity.GetUserId();
ApplicationUser currentUser = db.Users.FirstOrDefault(x => x.Id == currentUserId);
if (ModelState.IsValid)
{
db.Events.Add(@event);
db.SaveChanges();
if (User.IsInRole("Company"))
{
Company CompanyHosting = db.Companies.FirstOrDefault(x => x.Email == currentUser.Email);
var company = from e in db.PersonalUsers
where e.Email == currentUser.Email
select e;
foreach (var item in company)
{
item.HostedEvents.Add(@event);
db.SaveChanges();
}
db.SaveChanges();
}
else if (User.IsInRole("PersonalUser"))
{
PersonalUser PersonHosting = db.PersonalUsers.FirstOrDefault(x => x.Email == currentUser.Email);
var person = from e in db.PersonalUsers
where e.Email == currentUser.Email
select e;
foreach (var item in person)
{
item.HostedEvents.Add(@event);
db.SaveChanges();
}
db.SaveChanges();
}
return RedirectToAction("Index");
}
return View(@event);
}
PersonalUser 的模型.. Company 看起来几乎相同..
public class PersonalUser
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public string PhoneNumber { get; set; }
public string Password { get; set; }
public bool AcceptsTextNotifications { get; set; }
public bool AcceptsEmailNotifications { get; set; }
public List<PersonalUser> PeopleIFollow = new List<PersonalUser>();
public List<PersonalUser> PeopleThatFollowMe = new List<PersonalUser>();
public List<Company> CompaniesIFollow = new List<Company>();
public List<Company> CompaniesThatFollowMe = new List<Company>();
public List<Event> HostedEvents = new List<Event>();
public List<Event> EventsGoingTo = new List<Event>();
[ForeignKey("ApplicationUser")]
public string ApplicationUserID { get; set; }
public ApplicationUser ApplicationUser { get; set; }
}
以及事件模型..
public class Event
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public DateTime Date { get; set; }
public string Location { get; set; }
public string StartTime { get; set; }
public string EndTime { get; set; }
public bool IsPublic { get; set; }
public List<PersonalUser> PersonalInvited = new List<PersonalUser>();
}
为什么是线条 item.HostedEvents.Add(@event); db.SaveChanges(); 不更新数据库,将该事件插入个人或公司模型 List HostedEvents??
【问题讨论】:
-
你有什么错误吗?如果没有,您是否调试过您的事件参数是否获取值?
-
@MukeshModhvadiya 没有错误,事件参数得到正确的信息。 var item 也得到正确的信息。
-
您在 if 和 else 中从 PersonalUsers 中选择具有不同名称 company 和 person 的记录。
-
@MukeshModhvadiya 感谢您的提醒!虽然不会修复代码
标签: c# asp.net linq model-view-controller entity