#c# #asp.net #asp.net-mvc
#c# #asp.net #asp.net-mvc
Вопрос:
Сценарий
У меня есть 2 таблицы, person и их activities, каждый раз, когда я создаю activity, я также должен выбрать пользователя, которому принадлежит это activity. теперь, как мне сохранить / всегда обновлять * LatestActivityId запись PersonID пользователя?
это потому, что я хотел бы отследить, какими были данные о последней активности пользователя.
большое спасибо за ваш вклад
Вот что у меня есть на данный момент:
[HttpPost]
public ActionResult Create([Bind(Include = "PersonId" "," "ActivityTypeId")] dbo_Activities dbo_Activities)
{
if (ModelState.IsValid) {
// >>STUCK HERE<< //int SaveAsLatestActivity = db.dbo_Businesses.Max(p => p.ActivityId);
db.dbo_Activities.Add(dbo_Activities);
db.SaveChanges();
return RedirectToAction("Index");
}
// ComboBox >> selects person
ViewData["PersonId"] = new SelectList(db.dbo_Businesses, "PersonId", "FullName", dbo_Activities.PersonId);
return View(dbo_Activities);
}
Моя модель активности
public class dbo_Activities
{
[Key]
[Column(Order = 0)]
[Required]
[Display(Name = "Activity Id")]
public Int32 ActivityId { get; set; }
[Display(Name = "Person Id")]
public Int32? PersonId { get; set; }
}
Комментарии:
1. не могли бы вы показать свою модель действий, пожалуйста.
2. у вас есть
PersonId
поэтому после того, как вы создадите действие и оно получит идентификатор, запросите пользователя из таблицы persons, задайтеLatestActivityId
идентификатор только что созданного вами действия и сохраните пользователя3. @AntonToshik Спасибо, что вы здесь, я добавил свою модель активности в вопрос
4. @GregH Спасибо, что вы здесь .. не могли бы вы, пожалуйста, объяснить, что вы имеете в виду?
5. @Yosh взгляните на мой ответ и посмотрите, это то, к чему вы стремитесь. Дайте мне знать, если что-то не имеет для вас смысла
Ответ №1:
У вас есть PersonId
поэтому после того, как вы создадите действие и оно получит идентификатор, запросите пользователя из таблицы persons, задайте LatestActivityId
идентификатор действия, которое вы только что создали, и сохраните пользователя. Вы не опубликовали свои полные модели, поэтому я делаю некоторые предположения о том, как называются определенные свойства и названия моделей, но это должно выглядеть примерно так:
[HttpPost]
public ActionResult Create([Bind(Include = "PersonId" "," "ActivityTypeId")] dbo_Activities dbo_Activities)
{
if (ModelState.IsValid) {
db.dbo_Activities.Add(dbo_Activities);
db.SaveChanges();
//set LatestActivityId on the person to the ActivityId of the entry that was just created
var person = db.dbo_Persons.Single(x => x.Id == dbo_Activities.PersonId);
person.LatestActivityId = dbo_Activities.ActivityId;
db.SaveChanges();
return RedirectToAction("Index");
}
ViewData["PersonId"] = new SelectList(db.dbo_Businesses, "PersonId", "FullName", dbo_Activities.PersonId);
return View(dbo_Activities);
}
Комментарии:
1. Потрясающе, это сработало! Я надеюсь, что это поможет кому-то еще в будущем!