After working with a database project in Visual Studio, I thought it was probably time to create a simple console application to interact with the database using the current version of Entity Framework (v6.0).
So as we’ve already created the cddb database in a previous post, we’ll simply create a new console project and work with that DB.
- Create your application, as stated mine is a console application
- Add new item and select Data | ADO.NET Entity Data Model, mine’s named CddbContext (as this will include the source for the data context created for EF)
- Select Code First from database
- Create a new connection and supply the relevant details for your database connection
- Press next then select the tables (and views) you want to generate code for – then click Finish
Here’s the code generated
CddbContext.cs
public partial class CddbContext : DbContext
{
public CddbContext()
: base("name=CddbContext")
{
}
public virtual DbSet<album> albums { get; set; }
public virtual DbSet<artist> artists { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<artist>()
.HasMany(e => e.albums)
.WithRequired(e => e.artist)
.WillCascadeOnDelete(false);
}
}
artist.cs
[Table("artist")]
public partial class artist
{
[System.Diagnostics.CodeAnalysis.SuppressMessage(
"Microsoft.Usage",
"CA2214:DoNotCallOverridableMethodsInConstructors")]
public artist()
{
albums = new HashSet<album>();
}
public int Id { get; set; }
[Required]
[StringLength(50)]
public string Name { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage(
"Microsoft.Usage",
"CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<album> albums { get; set; }
}
album.cs
[Table("album")]
public partial class album
{
public int Id { get; set; }
[Required]
[StringLength(50)]
public string Title { get; set; }
public int ArtistId { get; set; }
public virtual artist artist { get; set; }
}
finally let’s create a simple but of code to get the artists from the database, so in Main we have
using (var db = new CddbContext())
{
var artists = db.artists;
foreach (var a in artists)
{
Console.WriteLine(a.Name);
}
}
If your database schema changes you will need to re-run the steps to generate your data context etc. or code by hand. There isn’t (currently) a way to update existing classes – so don’t make changes to the generated code and expect it to still exist after regeneration.