Код EF First ForeignKey не обновлен

1

Я пытаюсь обновить запись в базе данных. Данные для этой записи поступают из вызова 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?

Теги:
entity-framework
ef-code-first

1 ответ

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; }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню