LINQ to SQL - Nullable INT em ForeignKey = “Não é possível criar uma associação ...”
-
08-07-2019 - |
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?
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 ...
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:
fará com que este erro:
... mas isto:
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)