LINQ to SQL - Nullable INT em ForeignKey = “Não é possível criar uma associação ...”

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

Pergunta

Eu tenho uma tabela que tem uma chave primária que é um INT ... Eu tenho outra tabela, que tem uma relação ForeignKey para que a primeira mesa, mas é um NULLABLE INT.

Isto é perfeitamente ok, e 100% aceitável para SQL ... no entanto LINQ to SQL está se queixando de tipos incompatíveis ( "int para Nullable [int]").

Mensagem de erro: Não é possível criar uma associação "Store_People". Propriedades não têm tipos de correspondência: "PersonID", "ID"

Como faço para resolver isso para que o designer pára gritando com um uso correto de 100% do SQL?

Foi útil?

Solução

Aqui está o que eu joguei junto. coluna Table1Id de Table2 é uma chave estrangeira anulável a tabela 1. I até mesmo lançou em alguns registros de dados e testado alguns Linq consultas ...

enter descrição da imagem aqui

Editar : Desde que eu estou recebendo alguns downvotes (aparentemente) para o link quebrado, porque esta questão é de 6 anos de idade e o host que eu usei não sobreviveu ... aqui está uma versão atualizada.

Outras dicas

Eu encontrei o problema. Você pode criar a associação somente se a classe pai não tem o campo nulo como a chave.

Então, o seguinte:

alt texto http://www.singingeels.com/Articles /UserImage.aspx?ImageID=43d83ac4-707d-47fc-832c-588261e6a5d7

fará com que este erro:

alt texto http://www.singingeels.com/Articles /UserImage.aspx?ImageID=19ed54aa-9f4f-4d5c-ba18-4996509d2da7

... mas isto:

alt texto http://www.singingeels.com/Articles /UserImage.aspx?ImageID=0e09affd-2134-4712-999b-7e792f6e081b

irá funcionar perfeitamente.

que se parece com um bug (ou, pelo menos, uma estupidez de LINQ to SQL) ... mas eu adoro isso além disso.

Eu tenho precisamente essa situação em um DBML agora, e ele está funcionando bem.

chave primária

  • Nullable - False
  • Chave Primária - True
  • Tipo de dados Server - int NOT NULL IDENTIDADE
  • Tipo - int (System.Int32)

Foreign Key

  • Nullable - trure
  • Chave Primária - False
  • Tipo de dados Server - Int
  • Tipo - int (System.Int32) (na verdade definido como anulável no arquivo context.designer.cs)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top