Ik ben voor school de afgelopen dagen druk bezig geweest met LINQ to SQL in combinatie met ASP.NET MVC. Na een mooie applicatie te hebben gebouwd, kwam ik echter tot de ontdekking dat ik geen enkel primary key veld aan kan passen:
Tabeldefinitie (SQL Server 2008):
Welke door Visual Studio gemapt is als:
Wanneer ik de waardes handmatig probeer te updaten met een UPDATE-statement in SQL, is er niets aan de hand. Het probleem ligt dus bij LINQ to SQL (of het ORM framework). Ik ben het internet nu al zeker twee uur aan het afzoeken, maar ben tot nu toe weinig tegengekomen.
Zie ik hier iets over het hoofd of is hier sprake van een absurde beperking van LINQ to SQL?
C#:
1
2
3
4
5
6
7
8
| Vlucht vlucht = dataContext.Vluchts.First(); vlucht.vluchtnummer = 9999; // komt uiteraard nog niet in de tabel voor dataContext.SubmitChanges(); /* System.InvalidOperationException Value of member 'vluchtnummer' of an object of type 'Vlucht' changed. A member defining the identity of the object cannot be changed. Consider adding a new object with new identity and deleting the existing one instead. */ |
Tabeldefinitie (SQL Server 2008):
SQL:
1
2
3
4
5
6
| CREATE TABLE Vlucht( vluchtnummer NUMERIC(5) NOT NULL, ... CONSTRAINT pk_Vlucht PRIMARY KEY(vluchtnummer), ... ) |
Welke door Visual Studio gemapt is als:
C#:
1
2
3
| [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_vluchtnummer", DbType="Decimal(5,0) NOT NULL", IsPrimaryKey=true)] public decimal vluchtnummer { ... } |
Wanneer ik de waardes handmatig probeer te updaten met een UPDATE-statement in SQL, is er niets aan de hand. Het probleem ligt dus bij LINQ to SQL (of het ORM framework). Ik ben het internet nu al zeker twee uur aan het afzoeken, maar ben tot nu toe weinig tegengekomen.
Zie ik hier iets over het hoofd of is hier sprake van een absurde beperking van LINQ to SQL?
Ehhh wat?