保存时模型中的虚拟字段出现错误

时间:2019-01-05 09:15:24

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

我有这样的模型:

public class Quotation
{
    public System.Guid Id { get; set; }
    public string Code { get; set; }
    public DateTime Date { get; set; }
}

public class QuotationDetails
{
    public System.Guid Id { get; set; }
    public System.Guid QuotationId { get; set; }
    public virtual Quotation Quotation { get; set; } 
    public virtual string quotationCode => Quotation.Code;        
    public virtual DateTime quotationDate => Quotation.Date; \\ <== This return error
    public System.Guid MasterPriceUnitId { get; set; }
    public virtual MasterPriceUnit MasterPriceUnit { get; set; }
    public virtual string masterPriceUnitCode => MasterPriceUnit.Code; 
}

我保存修改的控制器是:

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult DetailsEdit([Bind(Include = "Id,QuotationId,MasterPriceUnitId")] QuotationDetails quotationDetails)
    {
        if (ModelState.IsValid)
        {
            db.Entry(quotationDetails).State = EntityState.Unchanged;
            db.Entry(quotationDetails).Property("MasterPriceUnitId").IsModified = true;
            db.SaveChanges();
            return Json("success", JsonRequestBehavior.AllowGet);
        }
        return PartialView("_DetailsEdit", quotationDetails);
    }

奇怪的是,在保存并返回错误时,它正在访问quotationDate这是虚拟字段:

  

对象引用未设置为对象的实例。说明:   当前Web执行期间发生未处理的异常   请求。请查看堆栈跟踪以获取有关   错误及其在代码中的起源。

     

异常详细信息:System.NullReferenceException:没有对象引用   设置为对象的实例。

     

源错误:

     

第83行:
  第84行:公共虚拟DateTime quotationDate => Quotation.Date;

     

第85行:

我为我的一个插件使用了许多虚拟字段。对于许多字段来说都可以,如果我删除了quotationDate字段,它不会返回任何错误并成功保存。

0 个答案:

没有答案