Entity Framework 4.1 Code First - невозможно удалить отношения между двумя объектами - PullRequest
1 голос
/ 09 января 2012

У меня есть объект «Поставщик», каждый объект «Поставщик» может ссылаться на другой объект «Поставщик» в качестве «родителя».

public class Supplier
{
    public int? Id { get; set; }

    public virtual Supplier Parent { get; set; }
}

Это все работает, как и ожидалось, пока я не попытаюсь удалить связь, так как у этого поставщика больше нет родителя. Я могу изменить его с нуля на конкретного поставщика и установить другого поставщика, но его значение не сохраняется после SaveChanges ().

supplier.Parent = null;

Внешний ключ «ParentId» в таблице «Поставщик» имеет значение NULL. Явное определение отношений не помогает.

modelBuilder.Entity<Supplier>().HasOptional(s => s.Parent).WithMany();

Я уверен, что упускаю что-то очевидное.

Ответы [ 2 ]

3 голосов
/ 10 января 2012

Просто нашел другое место в моем коде, где я делаю то же самое (это работает), и нашел это;

// Must access property (trigger lazy-loading) before we can set it to null (Entity Framework bug!!!)
var colour = modelItem.Colour;
modelItem.Colour = null;

Сделал то же самое в новом коде, и все это работает.

1 голос
/ 09 января 2012

Вместо modelBuilder.Entity<Supplier>().HasOptional(s => s.Parent).WithMany(); используйте следующее modelBuilder.Entity<Supplier>().HasOptional(s => s.Parent).WithMany().HasForeignKey(x=>x.ParentId); В противном случае он не знает, как называется внешний ключ

...