Pergunta

DBML

Eu tenho as seguintes entidades no meu dbml: (feita para um exemplo)

Book <- Media -> AuthorsForMedia <- Author

As setas são as relações no meu dbml.

Um livro é um tipo de mídia, e uma instância de um livro tem uma propriedade de mídia com os valores comuns a todos os meios nele. AuthorsForMedia é uma tabela de interseção com um AuthorID, um MediaId, e um AuthorsForMediaId.

Consulta

Meu consulta get no meu repositório é:

public Book Get(int id)
{
    var query = from b in db.Books
                where b.BookId == id
                select b;

    return query.Single();
}

O objeto resultante tem as propriedades do catálogo estabelecidos, e propriedades de mídia com todos os seus valores definidos.

Quando eu olho para AuthorsForMedia no diálogo Assista durante a depuração, os seguintes valores são definidos:

Count = 0 
HasLoadedOrAssignedValues = false
IsDeferred = false

Pergunta 1

Por que não os valores para AuthorsForMedia (e, em seguida, seu correspondente propriedade autor) ser avaliada com carregamento lento?

coisas que eu tentei

Depois de ler esta pergunta:

Eu tentei os DataLoadOptions com LoadWith / AssoicateWith e não funcionou. Acabei com erros como

  • Não é possível criar instância de erro class Foo: System.NotSupportedException: Subquery não é suportada em mídia do tipo Livro
  • ... System.InvalidOperationException: A expressão especificada deve ser do P.A forma, onde p é o parâmetro e A é um membro propriedade ou campo
  • Ou o valor não estava lá

Eu posso fornecer trechos de código para tudo isso se isso ajuda, mas eu acho que é uma questão conceitual e não uma sintática.

Resumo

Como devo ser recuperar esses valores, deve ser uma associação à esquerda, ou qualquer outra coisa que eu não encontrei até agora?

Foi útil?

Solução

Esta é a forma como o LoadWith deve olhar.

DataLoadOptions dlOptions = new DataLoadOptions();
dlOptions.LoadWith<Books>(book => book.AuthorsForMedia);
db.LoadOptions = dlOptions;

Outras dicas

DataLoadOptions e LoadWith () é o que você precisa.

Como você está chamando-los?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top