Em um datacontext são inseridos valores não disponíveis dentro do datacontext até depois de SubmitChanges?

StackOverflow https://stackoverflow.com/questions/658578

Pergunta

Eu vou através de um arquivo XML de artigos eo jornalista (s) que os escreveu. Como estamos adicionando os artigos em _DATA nosso datacontext podemos nos deparar com um jornalista que as necessidades adicionando para que faça o seguinte:

newJourno = New journalist With {.name = strJournalist}
_Data.journalists.InsertOnSubmit(newJourno)
.articles_journalists.Add(New articles_journalist With {.id_journalist = newJourno.id,         .id_article = .id})

No entanto, posteriormente, podemos nos deparar com esse mesmo jornalista novamente e nada é devolvido quando fazemos isso:

Dim journo = _Data.journalists.Where(Function(s) s.name = strJournalist).SingleOrDefault

Então, ele usa o código acima novamente para inserir o mesmo jornalista novamente.

Uma vez que todos os nossos inserções são feitas fazemos um SubmitChanges. Neste ponto, tem um ajuste cabeça:

instrução INSERT em conflito com a coluna FOREIGN KEY restrição 'FK_articles_journalists_journalists'. O conflito ocorreu no banco de dados 'blá', tabela 'jornalistas', coluna 'id'. A instrução foi encerrada.

De olhar através do SQL gerado no SQL Profiler você pode ver que ele está tentando adicionar alguns jornalistas mais de uma vez, este irá falhar como o nome deve ser distinto. Os registros subseqüentes que estão tentando ser inserido com esses jornalistas estão falhando como o jornalista não foi atualizado.

Com certeza, se eu tenho uma coleção de jornalistas, adicione um pouco para ele e, em seguida, olhar em minha coleção que eu deveria ver todos eles e não apenas os originais. Eu posso falsificar isso eu acho que fazendo uma SubmitChanges mas que parece um bocado parvo.

Agradecemos antecipadamente,

Dave.

Foi útil?

Solução

Se você quiser adicionar duas linhas entre pais e filhos ao banco de dados, você deve atribuir a entidade, em vez da coluna identificação, a identificação será gerado automaticamente e estarão disponíveis somente após a mudanças enviar.

Você tem que fazer um objeto articles_journalist, e depois atribuir a entidade newJourno a esta:

articles_journalist.journalist = newJourno;

Outras dicas

CMS é direito sobre a necessidade de atribuir o objeto, não o id.

No entanto, este não parece contornar o problema do datacontext não percebendo que ele teve novidades adicionado a ele até que você SubmitChanges. Só posso supor isso é por design e SubmitChanges, portanto, eu estou chamando agora como e quando as inserções de código de objetos que posteriormente procurar.

"O nome deve ser diferente."

Esta é uma falha de projeto sério. nomes pessoa nunca são únicos.

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