LINQ to SQL: INT con nulos en ForeignKey = & # 8220; No se puede crear una asociación & # 8230; & # 8221;

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

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?

¿Fue útil?

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 ...

ingrese la descripción de la imagen aquí

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:

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

causará este error:

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

... pero esto:

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

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)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top