如何将我的表与标识表连接起来?
How to join my tables with identity tables?
我使用 Identity 和 EF 启动了一个默认的 MVC 项目。
在我的应用程序中,用户将能够创建和编辑一些记录。
在这些记录的 table 中,我想要创建记录和最后更新的用户的 ID。
我的模型 class 是这样的:
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 中,我将新记录保存到数据库,如下所示:
[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();
}
}
我必须在哪里进行更改?你能给我一个这样的用法的示例代码吗?
谢谢。
你需要改变
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 等方式访问它们
我使用 Identity 和 EF 启动了一个默认的 MVC 项目。 在我的应用程序中,用户将能够创建和编辑一些记录。 在这些记录的 table 中,我想要创建记录和最后更新的用户的 ID。
我的模型 class 是这样的:
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 中,我将新记录保存到数据库,如下所示:
[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();
}
}
我必须在哪里进行更改?你能给我一个这样的用法的示例代码吗? 谢谢。
你需要改变
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 等方式访问它们