Entity Framework - Introduction (Part 2 of 3)

Entity Framework - Introduction (Part 2 of 3)

(Part 1)(Part 3)

Part 2 Model First

In part one we looked at creating a database fist project and generated a model from our pre-existing database, in part 2 we are going to build a model first and then create the database from the model. To begin this part of the tutorial we'll create a new class library project.

Create a new Visual Studio Class Library Project

Once the new project has been created, right click on the project name and select Add | New Item

Under C# Select Data | ADO.NET Entity Data Model

Select Empty Model and Finish

Building the Model

Next we'll add some entity objects on the design surface and start building our model. Entity objects can be created either by dragging and dropping items from the toolbox to the design surface or right clicking on the design surface and selecting Add | New Item.

Add From Toolbox

Add from Designer Surface

First I'll add a new Entity and call it Movie, notice that by default a new ID property is created with an int32 type and set to an identity.

Next, I'll add two more scalar properties to the Movie entity, title and date. 
Note: The default for a new scalar property is string and non-nullable. Note: the max length attribute of our scalar property will be used when the database is created for the max length of the column.

Change the type of the date property to DateTime

The next Entity will be called Genre, create one scalar property in the Genre called Category with a default type of string. The last Entity I'll create will be called Actor, I'll create one new scalar property called Name with a default type of string.

The Entity diagram should now look something like this

Create the Entity Relationships (Associations)

Right click on Movie and Select Add | Association

Ensure that Movie and Actor are selected in the dropdown boxes, Change the Multiplicity to Many to Many, this is because there can be many actors in a movie and actors can be in many movies. The new association will create 2 new navigation properties, Actors and Movies.

The Design Diagram has been updated showing the new association, many movies to many actors

Next create another association for Movie to Genre, this association will be many to one because movie can only have 1 genre but genre can be associated with many movies.

Generate the Database from the Model

Next we're going to create our SQL database from our model design. 
Note: The database that we are going to create needs to already exist on the SQL Server, just a shell of a database that we can point to. The command to Generate the database from the model actually just generates the schema in the existing database.

Create a new database on the SQL server called MovieLibrary

Before we generate the database from the model, let's take a look at the metadata that describes the database and metadata that describes the mapping between the model and the database.

To view the metadata, right click on the ModelFirst.edmx file in the Visual Studio Solution Explorer and select Open With | XML

There are two highlighted sections in the XML file, the first is the storage schema that describes the database and the second is the mapping layer, these sections are currently empty because we have not generated the database from the model yet.

Next go back to the Designer view of the model and right click on the design surface and select Generate Database From Model.

Create a new connection to the SQL server, select the new MovieLibrary database.

Select Next


Select Finish and the SQL file will be created that can be run against the SQL Server.

Right click anywhere in the file and select Execute. You'll be prompted from the SQL Server to enter credentials. After credentials have been entered you should get a message in the T-SQL window saying the Command Completed Successfully.

Take a look inside the database and see if the tables created in the model are now in the database.

This completes part 2 of the Entity Framework introduction, in part 3 I will discuss using the newly created models to leverage the Entity Framework.

(Part 1)(Part 3)


Microsoft Entity Framework Intro (Part 1 of 3)

Entity Framework - Introduction (Part 1 of 3)

(Part 2, Part 3)

The following tutorial will explain some basic concepts using the Microsoft Entity Framework, I'll attempt to explain this with a few examples to help demonstrate some of the capabilities.

Recomendations for this tutorial, other versions of these products may work however these are the versions used in this tutorial.

1. Microsoft Visual Studio 2012
2. SQL Server 2008R2
3. AdventureWorks database (2008R2 version) downloaded and installed from http://msftdbprodsamples.codeplex.com/downloads/get/478216


The Microsoft Entity Framework (EF) is an object-relational mapper that enables .NET developers to work with relational data using domain-specific objects. It eliminates the need for most of the data-access code that developers usually need to write. This creates, in effect, a "virtual object database" that can be used from within a project to access database objects using C# code instead of having to write a whole lot of SQL queries. In this post we'll add a sample database to our SQL server, create a new Entity Framework model from our existing sample database and try and get an understanding of the model.

Part 1 - Database First

Adding the AdventureWorks Database - If you do not have the demo database attached to your SQL Server you can download the database from the link above. Once downloaded attach the database to SQL Server.

Step 1 - Copy the database files into the correct file locations for your SQL Server. The .mdf file should be copied into the data folder where all the other SQL Databases exist and the .ldf file should be copied into the the Log folder where all the other Log files exist.

Step 2 -From the SQL Server Management Console right click on databases and select Attach.

Step 3 - Select Add and browse to the correct .mdf file located where you copied it on the SQL Server

Step 4 - Select the ellipsis next to the log file and ensure the log file path is correct

Step 5 - Ensure the AdventureWorks database is correctly attached to your SQL Server

Creating the Visual Studio Project - Next we'll create a Visual Studio Project to demonstrate some of the Entity Framework capabilities.

Note: If you are using a version of Visual Studio other than 2012, you may not have the Entit

In this example I'll create a new class library project, I'll be able to add or reference this project in any new solution that I create in order to leverage the Entity Framework.

Create a new class library and name it EFModel

Right click on the project name and select add, add a new ADO.NET Entity Data Model

Create an Entity Data Model From a database

Create a new connection to your database

rename the connection settings AWEntities

Select Tables and Views to be populated from the database into our new Entity Model and select Finish

We can now see a new Entity Framework model has been created called EFModel, this will be instantiated in our project when we want to leverage the Entity Framework.

The designer view of the Entity Model will be displayed, we can view all of the relationships or associations in the designer. Notice the relationship between Customer and SalesOrderHeader is a one to many relationship (depicted by the 1 on customer and the asterisks on SalesOrderHeader)

In our project an App.Config file has been created, within this file an Entity connection string can be found.

If we right click on the white space in the designer view of our Entity Model and select Mapping Details, then select one of the entities in the diagram, the database column to class property mapping can be viewed or modified.

The mapping details shows the relationships between the database columns and the model properties, these are also customize-able.


This wraps up part one of the introduction to the Entity Framework, we covered getting a sample database installed on our SQL Server 2008R2 Database Server, Creating a new Class Library project, adding an Entity Framework model created from our existing AdventureWorks database and briefly looking at our completed Model. In part two we'll cover creating a SQL database from an existing model.

(Part 2, Part 3)



Microsoft MSDN .img file

Microsoft seems to have switched file formats from .iso to .img for some of the software available on MSDN.

What is an .img file? At first I thought I had to use Nero to burn the image to a disk and then install, but I noticed that in Windows 8 you can natively mount .iso and .img formats.

Since I don't plan on installing these .img files on Windows 8 or Server 2012 yet, you can simply rename the file from .img to .iso and then use the file as you would normally use an .iso


Sharepoint 2013 Preview

Sharepoint 2013 is just around the corner, full of new features to take the platform to the next level

Here are some of the new features

  • Visual Experience
    • Metro Interface
    • To brand a SharePoint site, designers just create a site design as they typically would, by implementing HTML, CSS, and JavaScript. Designers can create these files by using their design tool of choice, whether that is Adobe Dreamweaver, Microsoft Expression Web, or some other HTML editor. You don't have to use SharePoint Designer or Visual Studio 2013 to brand a SharePoint site
  • App Store
    • Everything in Sharepoint 2013 is an App, lists, workflow, site pages, remote web apps, etc.
    • Make your apps available to everyone to try and buy through the public Store or only available to your employees through the corporate catalog
  • Social Networking
    • The introduction of Community Sites offers a forum experience to categorize discussions around subject areas, and connect users who have knowledge or seek knowledge about subject areas
    • My Sites for micro-blogging, allows likes, hash tags and news feed functionality following content, people and sites.
  • Integration
    • Organize all your projects and tasks to get visibility into upcoming deliverables across SharePoint, Outlook and Microsoft Project
    • Sync your content in SharePoint to your desktop with SkyDrive Pro
  • Development
    • Based on common web standards like HTML, CSS, and JavaScript. Furthermore, implementation relies on established protocols like the Open Data protocol (OData), and OAuth
    • Support for the newly developed web-based tool "Napa" Office 365 Development Tools for developing apps
    • Visual Studio 2012 now includes a new app project template in the Apps folder named Apps for SharePoint 2013
    •  In addition to the use of Representational State Transfer (REST) endpoints for web services, there is a broad new API for both server and client development. Remote event receivers and now supported in addition to client-side rendering
  • Cloud
    •  Improved and enhanced to support the new cloud-based architecture and app-driven development framework
    • Full support for development against the Windows Azure Workflow platform
  • Content
    • Many new features for videos and using videos on pages. A new video content type is added, and the video upload process is improved for content authors
    • Content authors can insert an iframe element into an HTML field on a page. This lets content authors embed dynamic content from other sites, such as videos or map directions
    •  Support for image renditions. Image renditions let you display different sized versions of an image on different pages
    • Cross-site publishing lets you store and maintain content in one or more authoring site collections, and display this content in one or more publishing site collections
    • Designate any library or list as a catalog. After the Cross-Site Collection Publishing feature is enabled for a site collection, you can designate any library or list within that site collection as a catalog so that content can be reused on publishing site collections
  • Localization
    • Built in integrated translation service that lets content authors select content for export for human translation or specify content for machine translation.

These are only a subset of all of the new and improved features and functionality in the Sharepoint 2013 Preview, for more information check out Microsoft's official Sharepoint 2013 sites at


Download the preview at:


Microsoft System Center Service Manager 2012 Gotchas

I have attempted to install SCSM 2012 unsuccessfully multiple times and learned a few things that I'll share that will hopefully save someone hours of time hunting down solutions for these issues.

The first issue I ran into was during the SCSM Data warehouse management server installation, during this install you will be asked for multiple database names, rather than selecting the default names, I chose to append '2012' to all the database names. The install will fail with 2012 in the database names, I tried this in three separate environments and it failed in all three.

The next issue was the SQL instance name, if you create a new instance besides the default MSSQL and include 'MSSQL' in the name of the new instance, the installation will fail. Tried this in a couple of different environments and always a failed installation.

The last issue is during an upgrade from SCSM 2010 to SCSM 2012, about three quarters of the way through the installation it will attempt to make changes to the SSRS server, if there is a web folder on the site with the name 'Data Sources' the installation will fail. This failure will be a catastrophic failure and require a disaster recovery scenario to rebuild/reinstall. The horrible thing about this issue is that if you have been creating reporting solutions using the SQL Business Intelligence Development Studio, when you publish your projects to the SSRS server I believe it will automatically create the Data Sources Folder. For the upgrade, rename this folder, run the upgrade and the change the name back after it succeeds.

SQL 2008 Native Client Installation Error

I recently worked on a Microsoft System Center Service Manager 2012 upgrade project and on both of the management servers during the prerequisite installation the SQL Server 2008 Native Client installation would fail. After searching around through what seemed like hundreds of sites, I found a solution that works consistently.

Error Message - An error occurred during the installation of assembly 'Microsoft.VC80.CRT...

Export and delete the following registry keys...

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide\Winners\x86_policy.8.0.microsoft.vc80 & vc90 entries…

[HKEY_LOCAL_MACHINE\COMPONENTS\DerivedData\Components\x86_policy.8.0.microsoft.vc80 & vc90 entries

[HKEY_LOCAL_MACHINE\COMPONENTS\WINNER\Components\x86_policy.8.0.microsoft.vc80 & vc90 entries.

Note: On my 2008 R2 Server the third set of keys was not present

Then run services.msc and set the "Windows Module Installer" to automatic and Reboot.
The installation will now complete successfully.