EF Code First ForeignKey未更新

时间:2014-08-24 10:40:28

标签: c# entity-framework ef-code-first

我试图更新数据库中的记录。 此记录的数据来自MVC Api呼叫

在来自Api Call的对象中,对客户的引用已被更改。

班级:

public class Visit
{
        public int Id { get; set; }
        public DateTime Start { get; set; }
        public virtual Customer Customer { get; set; }
}

public class Customer
{
            public int Id { get; set; }
}

API更改摘录:

    db.Entry(visit).State = EntityState.Modified;
    if (visit.Customer.Id == 0) db.Entry(visit.Customer).State = EntityState.Added;


    try
    {
        db.SaveChanges();
    }

当我检查访问对象时,我看到访问的Customer属性与原始属性不同,但是跟踪db.SaveChanges();显示表格的[Customer_Id]没有变化....

exec sp_executesql N'update [dbo].[Visits]
set [StartVisit] = @0, [EndVisit] = null, [Activities] = @1, [Paid] = @2
where ([Id] = @3)
',N'@0 datetime2(7),@1 nvarchar(max) ,@2 bit,@3 int',@0='2014-08-31 14:21:26.7800000',@1=N'text ',@2=0,@3=33

为什么EF没有看到这个变化?或者,我必须做什么,以便EF看到更改,并更新Customer_Id记录?

1 个答案:

答案 0 :(得分:2)

不要只使用Id。而是使用VisitId和CustomerId。 添加外键时,必须添加FK和该类的实例,以便该列存在于db中。

public class Visit
{
 public int VisitId { get; set; }
 public DateTime Start { get; set; }

 public int CustomerId { get; set; }
 public virtual Customer Customer { get; set; }
}



public class Customer
{
 public int CustomerId{ get; set; }
}