EF是不是将当前的UserID和Date保存到数据库?

时间:2014-05-08 12:26:52

标签: c# entity-framework asp.net-mvc-5

有人可以检查下面的代码并告诉我为什么UserId和Date字段没有填充?

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult RecordCard(WeightViewModel vModel)
{
    Weight Model = vModel.Weight;
    if (ModelState.IsValid)
    {
        using (WebApplication1Entities db = new WebApplication1Entities())
        {
            Weight weight = new Weight();
            weight.UserId = User.Identity.GetUserId();
            weight.Stone = Model.Stone;
            weight.Pound = Model.Pound;
            weight.Date = System.DateTime.Now;

            db.Weights.Add(Model);
            db.SaveChanges();
        }
    }
    return RedirectToAction("Index");
}

发布表后,Weight有一个新的记录,包含Stone和Pound值,但UserId和Date是Null。

我在数据引用的Weight类下面包含了:

public partial class Weight
{
    public int Id { get; set; }
    public string UserId { get; set; }
    public Nullable<short> Stone { get; set; }
    public Nullable<short> Pound { get; set; }
    public Nullable<System.DateTime> Date { get; set; }
}

非常感谢任何帮助: - )

1 个答案:

答案 0 :(得分:3)

因为你这样做:

db.Weights.Add(Model);

而不是:

db.Weights.Add(weight);

这是一个非常好的理由,以便您的ViewModel课程的DomainModel个班级。如果ViewModelType不同,则数据库上下文的Add将因编译错误而失败。