Dynamic data website use LINQ to
SQL/LINQ to Entities (ORM tool) that is released in .Net framework 3.5 to
complete the database operations.
With this information we will move
forward and create a simple Dynamic data website and understand it better. We
will see more about Dynamic Data Websites and its working in detail after
building the sample application.
We will build a sample dynamic data
website that does all CRUD operation on Employees and Department
table.
Steps
1. Go to Start> All Programs> Open Visual Studio 2008.
2. Click New> Website and Select “Dynamic Data Web Site”. I have used C# as the language in this sample.
Rename the website name as per your need. The solution by default will have some files created
automatically as seen in the below figure.
We will see
more about these files and its usages in later sections of this
article.
3. Include a new SQL express database inside App_Data folder and create
a table called Employees and Department.
Refer the below figure.
4. Next, Design your LINQ to SQL classes. The Dynamic Data website will use
LINQ to SQL as the data access model. Add a new LINQ to SQL class through “Add New Item..” dialog box in your
solution explorer. I have named it as EmployeeDataClasses.
5. From the Server Explorer, expand the database tables. Drag Employee and
Department into LINQ to SQL designer. The LINQ to SQL Objects will be created
automatically. Click Save. Refer the below figure.
6. Now, on the solution explorer double click the Global.asax file to
open it. On Application_Start event you can see a method called RegisterRoutes()
which is defined in Global.asax file. Refer the below code that can be found in
Global.asax file for the method.
public static void
RegisterRoutes(RouteCollection routes) {
MetaModel model = new
MetaModel();
// IMPORTANT:
DATA MODEL REGISTRATION
// Uncomment this line to register
LINQ to SQL classes or an ADO.NET Entity Data
// model for ASP.NET Dynamic Data.
Set ScaffoldAllTables = true only if you are sure
// that you want all tables in the
data model to support a scaffold (i.e. templates)
// view. To control scaffolding
for individual tables, create a partial class for
// the table and apply the
[Scaffold(true)] attribute to the partial class.
// Note: Make sure that you change
"YourDataContextType" to the name of the data context
// class in your
application.
//model.RegisterContext(typeof(YourDataContextType), new ContextConfiguration()
{ ScaffoldAllTables = false });
// The following statement
supports separate-page mode, where the List, Detail, Insert, and
// Update tasks are performed by
using separate pages. To enable this mode, uncomment the following
// route definition, and comment
out the route definitions in the combined-page mode section that
follows.
routes.Add(new
DynamicDataRoute("{table}/{action}.aspx") {
Constraints = new
RouteValueDictionary(new { action = "List|Details|Edit|Insert" }),
Model = model
});
// The following statements
support combined-page mode, where the List, Detail, Insert, and
// Update tasks are performed by
using the same page. To enable this mode, uncomment the
// following routes and comment
out the route definition in the separate-page mode section above.
//routes.Add(new
DynamicDataRoute("{table}/ListDetails.aspx") {
// Action =
PageAction.List,
// ViewName =
"ListDetails",
// Model = model
//});
//routes.Add(new
DynamicDataRoute("{table}/ListDetails.aspx") {
// Action =
PageAction.Details,
// ViewName =
"ListDetails",
// Model = model
//});
}
To make the development easier and
faster, Microsoft have included some codes and description for the method which
needs to be configured by us. Just uncomment the first line of code (bolded).
Update the “YourDataContextType” on the above with your data context class,
EmployeeDataClasses in my case. Also, make the property ScaffoldAllTables to
true. I will discuss more about this property in later sections. The final code
will be,
model.RegisterContext(typeof(EmployeeDataClassesDataContext), new
ContextConfiguration() { ScaffoldAllTables = true });
That’s it! We are done with creating a
fully operational data driven websites that is capable of doing the CRUD
operations on all the available objects in our ORM. Execute the application and
see it in action. Refer the below figures,
Figure 1 – Home Page
Figure 2 – Employee List Page
Figure 3 – Edit Page
Figure 4 – Insert Page
Moving forward, we will understand more
about the dynamic data websites and how they are built. As i said earlier, the
dynamic data website will include some default files when it is created. Refer
the solution explorer image above. It uses these files to create the pages
dynamically to perform the CRUD operations on the available entities in the
ORM.
In short, we can say the dynamic data
website is template based i.e. it has number of predefined template files that
will be used for generating pages for CRUD operations dynamically. We will see
more about this in next section.
|