我使用Identity和EF开始了一个默认的MVC项目。 在我的应用程序中,用户将能够创建和编辑一些记录。 在这些记录的表格中,我希望拥有创建记录并最后更新的用户的ID。
我的模型类就像:
public class Record
{
public int ID { get; set; }
public DateTime CreateTime { get; set; }
public string CreatingUserID { get; set; }
public string UpdatingUserID { get; set; }
public DateTime UpdateTime { get; set; }
public Enums.RecordStatus Status { get; set; }
}
在RecordsController中,我将新记录保存到db:
[Authorize]
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(FormCollection form, RecordCreateVM vm)
{
string userId = User.Identity.GetUserId();
DateTime now = DateTime.Now;
Record rec = new Record ();
if (ModelState.IsValid)
{
int newRecordId;
using (RecordRepository wr = new RecordRepository())
{
UpdateModel(rec);
rec.CreateTime = now;
rec.UpdateTime = now;
rec.CreatingUserID = userId;
rec.UpdatingUserID = userId;
rec.Status = Enums.RecordStatus.Active;
Record result = wr.Add(rec);
wr.SaveChanges();
newRecordId = result.ID;
}
}
}
当我列出这些记录时,我还希望我的页面显示这些用户'用户名。 我从我创建的存储库中获取了所有活动记录。
public ActionResult Index()
{
RecordListVMviewModel = new RecordListVM();
using (RecordRepository wr = new (RecordRepository())
{
viewModel.Records = wr.GetAll();
}
return View(viewModel);
}
这是存储库代码:
public class RecordRepository: Repository<Record>
{
public override List<Record> GetAll()
{
IQueryable<Record> activeRecords = DbSet.Where(w => w.Status == Enums.RecordStatus.Active);
return activeRecords.ToList();
}
}
我必须在哪里进行更改?你能给我一个像这样的用法的示例代码吗? 谢谢。
答案 0 :(得分:0)
您需要更改
public string CreatingUserID { get; set; }
public string UpdatingUserID { get; set; }
类似于:
public User CreatingUser { get; set; }
public User UpdatingUser { get; set; }
在创建新RecordRepository()
期间设置ID然后以Record.CreatingUser.FirstName ect
的形式访问它们