EF4。添加具有关系的对象会导致全表选择

时间:2010-05-21 01:27:03

标签: linq entity-framework linq-to-entities

Ex 1:

“autor.ComentariosWorkItens.Add(comentarioWorkItem);”

autor.ComentariosWorkItens使EF4加载所有ComentariosWorkItens。

前2:

comentarioWorkItem.Usuario = autor;

Fixup使EF加载所有ComentariosWorkItens:

    private void FixupUsuario(Usuario previousValue)
    {
        if (previousValue != null && previousValue.ComentariosWorkItens.Contains(this))
        {
            previousValue.ComentariosWorkItens.Remove(this);
        }

        if (Usuario != null)
        {
            if (!Usuario.ComentariosWorkItens.Contains(this))
            {
                Usuario.ComentariosWorkItens.Add(this);
            }
        }
    }

我该如何防止这种情况?

2 个答案:

答案 0 :(得分:0)

1:转过身来:

comentarioWorkItem.Usario = autor;

2:EF应如何回答这个问题:

previousValue.ComentariosWorkItens.Contains(this)

...没有考虑ComentariosWorkItens

答案 1 :(得分:0)

我发了一封电子邮件给Julie Lerman。她的答案在这里:

  

“我认为这是EF的一部分已知(和AWFUL)行为。我不知道该告诉你什么。   您可能需要查看MSDN论坛,看看团队中是否有人对此有任何意见。   而且,由于我正在审阅我的书,然后才开始打印,我会检查以确定我在那里有关于此的警告!“