2012-04-28 18 views
5

kolumny klucza podstawowego typu „tinyint” nie może być generowany przez serwer ...LINQ to SQL wstawić z klucza podstawowego jako tinyint ustawienie automatycznego przyrostu daje komunikat o błędzie

jest to więcej niż przed odpowiedź pytanie, ponieważ szukałem tego na stosie i nie mogłem znaleźć żadnego pytania/odpowiedzi, by pomóc.

Zasadniczo, starałem się zrobić wkładkę (poniżej)

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

A mój klucz podstawowy ustalono tożsamość prawda, ale typ danych został ustawiony na TINYINT ... zobacz klasa atrybutów poniżej

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

Spowoduje to spowodował komunikat o błędzie:

klucz podstawowy kolumna typu „tinyint” nie może być generowany przez serwer

Więc nie mogłem dowiedzieć się tego, dopóki mogłem ten link ... http://connect.microsoft.com/VisualStudio/feedback/details/402060/accessing-a-primary-key-id-when-its-declared-as-a-tinyint-using-linq

Jest to znany problem, ale nie stała - Używam SQL 2008 Express i VS Web Developer 2010 Wyrazić.

Moja poprawka polegała na zmianie typu danych na Int i wszystko działa. Mam nadzieję, że to pomaga, by ktoś inny szukał rozwiązania.

A tak na prawdę pytanie - Jaki jest najlepszy typ danych do wykorzystania w moim przypadku? Czy powinienem zachować go jako Int lub zmienić go, mimo że działa? Dzięki

+0

Link do strony connect.microsoft.com nie działa. Strona nie znaleziona. –

Odpowiedz

2

Administratorzy baz danych mają przyjemną dyskusję na temat when to use TINYINT over INT, chociaż nie sądzę, że dotyczy to Twojego przypadku. Jeśli użycie int spowoduje pominięcie znanego problemu, potrzebujesz bardzo dobrego powodu, aby go zmienić. Zostawiłbym to tak, jak jest.

+0

Interesująca lektura, dziękuję za link ... I trzymam Int! – Jason

Powiązane problemy