LINQ to SQL: INT con nulos en ForeignKey = & # 8220; No se puede crear una asociación & # 8230; & # 8221;
-
08-07-2019 - |
Pregunta
Tengo una tabla que tiene una clave primaria que es un INT ... Tengo otra tabla, que tiene una relación de clave externa con esa primera tabla, pero es un INT NULABLE.
Esto está perfectamente bien, y es 100% aceptable para SQL ... sin embargo, LINQ to SQL se queja de tipos no coincidentes (& int; Nullable [int] ").
Mensaje de error: No se puede crear una asociación " Store_People " ;. Las propiedades no tienen tipos coincidentes: " PersonID " ;, " ID " ;.
¿Cómo resuelvo esto para que el diseñador deje de gritar con un uso 100% correcto de SQL?
Solución
Esto es lo que arrojé juntos. La columna Table1Id de Table2 es una clave foránea anulable para Table1. Incluso agregué algunos registros de datos y probé algunas consultas de Linq ...
EDITAR : dado que estoy recibiendo algunos votos negativos (aparentemente) por el enlace roto porque esta pregunta tiene 6 años y el host que utilicé no ha sobrevivido ... aquí hay una versión actualizada.
Otros consejos
Encontré el problema. Puede crear la asociación SOLAMENTE si la clase principal no tiene el campo Anulable como clave.
Entonces, esto:
causará este error:
... pero esto:
funcionará perfectamente.
Eso parece un error (o al menos, una estupidez de LINQ to SQL) ... pero me encanta además de eso.
Tengo precisamente esa situación en un DBML ahora, y está funcionando bien.
Clave principal
- Anulable - Falso
- Clave primaria - Verdadero
- Tipo de datos del servidor - int NO IDENTIDAD NULA
- Tipo - int (System.Int32)
Clave externa
- Anulable - Trure
- Clave principal: falso
- Tipo de datos del servidor - Int
- Tipo - int (System.Int32) (realmente definido como Nullable en el archivo context.designer.cs)