A minap azzal küzdöttem, hogy Visual Studio 2008 Release Candidate alatt próbáltam működésre bírni egy LINQ to SQL-es projektet, ami Beta 2 alatt készült. Keserves küzdés volt, mert nagyon nem hagyta magát, hiányzott neki a generált entitás osztályokon az Add metódus. Reménykedtem, hogy nem azt képzeli, majd én fogom megírni?! A Beta 2-ben még biztosan volt a Table<T> típusnak Add metódusa, most meg csak ezt kántálja a fordító:
'System.Data.Linq.Table<AccountRequest>' does not contain a definition for 'Add' and no extension method 'Add' accepting a first argument of type 'System.Data.Linq.Table<AccountRequest>' could be found (are you missing a using directive or an assembly reference?)
Megjegyzem az jópofa, hogy már itt is megjelentek az extension metódusok :) Irány a gugli meg a nagy koppanás, hiszen a Visual Studio RC változat nem publikus, csak egy aránylag szűk kör kapta meg, így nem túl sok sikerrel kerestem arra, hogy breaking changes.
Kereskényi Roby kellett hozzá, hogy megtudjam, a Beta 2 után bizony átneveztek néhány metódust, mert a régi név nem vot egyértelmű:
- Add --> InsertOnSubmit
- AddAll --> InsertAllOnSubmit
- Remove --> DeleteOnSubmit
- RemoveAll --> DeleteAllOnSubmit
Így valóban egyértelműbb, hogy mikor mi történik, és talán nem fogjuk elfelejteni meghívni a SubmitChanges metódust sem. De ami még jobb, hogy az OnValidate partial method végre megkapja paraméterben, hogy mikor fut, még pedig egy enumeráció formájában:
partial void OnValidate( System.Data.Linq.ChangeAction action );
ahol a ChangeAction így fest:
namespace System.Data.Linq {
public enum ChangeAction {
None = 0,
Delete,
Insert,
Update
}
}
Nem hiába, olvasott embernek párja nincs! Különösen, ha Silverlightról bloggol, lehet kapaszkodni...