I’ve started learning about LINQ because I need to keep up to date with the latest technology out there. I’ve created a simple Business Layer which interact directly with Linq to SQL(DBML). It includes Insert, Update, Delete, Select and paging with LINQ.
Hopefully this tutorial will be useful enough for someone who is going to learn about LINQ. With LINQ we can really simplify/integrate the stored procedure into our Code base but it doesn’t mean LINQ does not support Stored Procedure.
It supports Stored Procedure as well since we might use Stored Procedure for complex calculation. You don’t need to create a table adapter anymore since LINQ does everything the same as table adapter.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace LinqCore.Factories { public class GroupFactory { ////// this is used to get all the groups /// /// public IQueryable GetAllGroups() { GroupsDataContext db = new GroupsDataContext(); var groups = from g in db.Groups select g; return groups; } ////// this is used to get the group based on the group id /// /// /// public Group GetGroup(int groupid) { GroupsDataContext db = new GroupsDataContext(); var groups = from g in db.Groups where (g.GroupID == groupid) select g; return groups.SingleOrDefault(); } ////// this is used to insert Or Update which determined by the nullable /// integer value of the groupID /// /// /// /// public void GroupUpdate(int? groupID, string groupName, bool valid) { GroupsDataContext db = new GroupsDataContext(); Group group = new Group(); if (groupID.HasValue) { group = db.Groups.Single(p => p.GroupID == groupID.Value); } group.GroupName = groupName; group.valid = valid; if (!groupID.HasValue) { db.Groups.InsertOnSubmit(group); } db.SubmitChanges(); } ////// this is used to delete a group based on its ID /// /// public void GroupDelete(int groupID) { GroupsDataContext db = new GroupsDataContext(); Group group = db.Groups.Single(p => p.GroupID == groupID); db.Groups.DeleteOnSubmit(group); db.SubmitChanges(); } ////// this is used to do paging for the returned result /// /// /// /// public IQueryable GetAllGroups(int startIndex, int pageSize) { GroupsDataContext db = new GroupsDataContext(); var groups = from g in db.Groups select g; return groups.Skip(startIndex).Take(pageSize); } } }