2012-04-28 8 views
5

la columna de clave primaria del tipo 'tinyint' no puede ser generada por el servidor ...LINQ a SQL inserto con clave primaria como tinyint se pone en auto-incremento da mensaje de error

Esto es más de una respuesta a una pregunta porque he estado buscando esto en la pila y no he podido encontrar ninguna pregunta/respuesta para ayudar.

Básicamente, yo estaba tratando de hacer una inserción (continuación)

public void AddTask(Task task) 
{ 
    TwoDooDataContext db = new TwoDooDataContext(); 
    db.Tasks.InsertOnSubmit(task); 
    db.SubmitChanges(); 
} 

Y mi clave principal tendieron una identidad verdadera, pero el tipo de datos se estableció en TinyInt ... ver atributos de clase a continuación

ColumnAttribute(Storage="_ID", AutoSync=AutoSync.OnInsert, 
DbType="TinyInt NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)] 

Hacer esto provocó el mensaje de error:

la columna de clave primaria del tipo 'tinyint' no puede ser generado por el servidor

Así que no podía resolver esto hasta que pude este enlace ... http://connect.microsoft.com/VisualStudio/feedback/details/402060/accessing-a-primary-key-id-when-its-declared-as-a-tinyint-using-linq

Es un problema conocido, pero no fija - estoy usando SQL 2008 Express y VS Web Developer 2010 Exprimir.

Mi solución fue cambiar el tipo de datos a Int y todo funciona. Espero que esto ayude en caso de que alguien más esté buscando una solución.

Y en realidad una pregunta: ¿Cuál es el mejor tipo de datos para usar en mi caso? ¿Debo mantenerlo como Int o cambiarlo aunque esté funcionando? Gracias

+0

El enlace a connect.microsoft.com está muerto. Página no encontrada. –

Respuesta

2

Administradores de bases de datos tiene una buena discusión de when to use TINYINT over INT aunque no creo que se aplique en su caso. Si usar un int te permite superar el problema conocido, necesitarás una muy buena razón para cambiarlo. Lo dejaría como está.

+0

Lectura interesante, gracias por el enlace ... ¡Y guardo el Int! – Jason

Cuestiones relacionadas