如何将我的表与身份表联系起来?

时间:2016-06-09 20:29:46

标签: asp.net entity-framework identity

我使用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();
    }      
}

我必须在哪里进行更改?你能给我一个像这样的用法的示例代码吗? 谢谢。

1 个答案:

答案 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

的形式访问它们