EF: Falha na validação na atualização ao usar as propriedades necessárias carregadas preguiçosamente

Dado este modelo extremamente simples:

public class MyContext : BaseContext
{
    public DbSet<Foo> Foos { get; set; }
    public DbSet<Bar> Bars { get; set; }
}

public class Foo
{
    public int Id { get; set; }
    public int Data { get; set; }
    [Required]
    public virtual Bar Bar { get; set; }
}

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

O seguinte programa falha:

object id;
using (var context = new MyContext())
{
    var foo = new Foo { Bar = new Bar() };
    context.Foos.Add(foo);
    context.SaveChanges();
    id = foo.Id;
}
using (var context = new MyContext())
{
    var foo = context.Foos.Find(id);
    foo.Data = 2;
    context.SaveChanges(); //Crash here
}

Com umDbEntityValidationException. A mensagem encontrada emEntityValidationErrors éO campo Bar é obrigatóri.

No entanto, se eu forçar o carregamento doBar adicionando a seguinte linha antes deSaveChanges:

var bar = foo.Bar;

Tudo funciona bem. Isso também funciona se eu remover o[Required] attribute.

Este é realmente o comportamento esperado? Existem soluções alternativas (além de carregar todas as referências necessárias sempre que eu quiser atualizar uma entidade)

questionAnswers(8)

yourAnswerToTheQuestion