Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Quick code snippet time!
The following are generic methods for inserting and updating a detached entity into a database using LINQ to SQL.
1: /// <summary>
2: /// Updates the database with item.
3: /// </summary>
4: /// <typeparam name="T">Type of the item</typeparam>
5: /// <param name="item">The item.</param>
6: public static void UpdateDatabaseWithItem<T>(T item) where T : class
7: {
8: var store = GetNewDataContext();
9: var table = store.GetTable<T>();
10: table.Attach(item);
11: store.Refresh(RefreshMode.KeepCurrentValues, item);
12: store.SubmitChanges();
13: }
14:
15:
16: /// <summary>
17: /// Inserts the item into database.
18: /// </summary>
19: /// <typeparam name="T">Type of the item</typeparam>
20: /// <param name="item">The item.</param>
21: public static void InsertItemIntoDatabase<T>(T item) where T : class
22: {
23: var store = GetNewDataContext();
24: var table = store.GetTable<T>();
25: table.InsertOnSubmit(item);
26: store.SubmitChanges();
27: }
GetNewDataContext() is a method (not shown) which does what its name says, returns a data context.
The only part that is not really obvious is on line 11. That line is a "hack" to allow you to attach an entity as modified without using a timestamp or turning off optimistic concurrency or attaching a previous version of the entity. What this means is that this update will throw a fit if there is a concurrency error! However, for my use of this code ( mainly for unit test preparation ) it works great.
Comments
Anonymous
June 16, 2009
PingBack from http://fixmycrediteasily.info/story.php?id=10331Anonymous
July 19, 2010
Good article. I used it and added my own functions for a generic Linq base BLL class. I added a thanks to my post www.dannyhansen.nl/.../linq-to-sql-generic-insert-update-delete