- •Contents
- •Lab 1: linq to sql: Database Language Integrated Queries
- •Lab Objective
- •Task 4 – Querying Database Data
- •Task 5 – Exploring the ide
- •Exercise 2 – Creating an Object Model
- •Task 1 – Creating the order entity
- •Task 2 – Mapping Relationships
- •Task 3 – Strongly Typing the DataContext Object
- •Exercise 3 Using Code Generation to Create the Object Model
- •Task 1 - Adding a linq to sql Classes file
- •Task 2 – Create your object model
- •Task 3 – Querying your object model
- •Task 4 – Mapping a stored procedure
- •Task 5 – Retrieving new results
- •Exercise 4 – Modifying Database Data
- •Task 1 – Modifying your object model
- •Task 2 – Creating a new Entity
- •Task 3 – Updating an Entity
- •Task 4 – Deleting an Entity
- •Task 5 – Submitting changes
- •Task 6 – Using Transactions
- •Lab Summary
Task 3 – Strongly Typing the DataContext Object
Add the following code above the Customer class declaration:
public class NorthwindDataContext : DataContext
{
// Table<T> abstracts database details per table/date type
public Table<Customer> Customers;
public Table<Order> Orders;
public NorthwindDataContext(string connection) : base(connection) { }
}
Make the following changes to the Main method to use the strongly-typed DataContext.
static void Main(string[] args)
{
// Use a standard connection string
NorthwindDataContext db = new NorthwindDataContext(@"Data Source=.\sqlexpress;Initial Catalog=Northwind");
// Attach the log showing generated SQL to console
// This is only for debugging / understanding the working of LINQ to SQL
db.Log = Console.Out;
// Query for customers from London
var custs =
from c in db.Customers
where c.City == "London"
select c;
foreach (var cust in custs)
{
Console.WriteLine("ID={0}, Qty={1}",
cust.CustomerID, cust.Orders.Count);
}
}
Press F5 to debug the solution
This optional feature is convenient since calls to GetTable<T> are not needed. Strongly typed tables can be used in all queries once such a DataContext-derived class is used.
Exercise 3 Using Code Generation to Create the Object Model
Generating the database table relationships can be a tedious and error-prone process. In this exercise we’ll recreate the object model of the previous exercise using the new LINQ designer
Task 1 - Adding a linq to sql Classes file
First, to clean up, delete all the classes in Program.cs we’ve defined, keeping only the Program class.
In Microsoft Visual Studio, click the Project | Add New Item… menu command
In the Templates click Linq to SQL Classes
Provide a name for the new item by entering “Northwind” in the Name field
Click OK
Task 2 – Create your object model
In Server Explorer, expand Data Connections.
Open the Northwind server (NORTHWND.MDF if you are using SQL Server Express).
Open the Northwind.dbml file double clicking it from the solution explorer
From the Tables folder drag the Customers table onto the designer surface
From the Tables folder drag the Orders table onto the designer surface
Make the following changes to the Main method to use the model created by the designer.
static void Main(string[] args)
{
// If we query the db just designed we don’t need a connection string
NorthwindDataContext db = new NorthwindDataContext();
// Attach the log showing generated SQL to console
// This is only for debugging / understanding the working of LINQ to SQL
db.Log = Console.Out;
// Query for customers from London
var custs =
from c in db.Customers
where c.City == "London"
select c;
foreach (var cust in custs)
{
Console.WriteLine("ID={0}, Qty={1}",
cust.CustomerID, cust.Orders.Count);
}
Console.ReadLine();
}
Task 3 – Querying your object model
Press F5 to debug the project
As you can see the designer has written all the “plumbing” code for you. You can find it in the Northwind.designer.cs file.
