- Install-Package EntityFramework
Create Model Class
public class Seed
{
public Guid SeedId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public string Link { get; set; }
public Germination Germination { get; set; }
public string Supplier { get; set; }
public int Count { get; set; }
public decimal Price { get; set; }
public ICollection<Order> Orders { get; set; }
}
public class Order
{
public Guid OrderId { get; set; }
public decimal Shipping { get; set; }
public decimal Tax { get; set; }
public Seed Seed { get; set; }
}
Create DbContext Class
public interface IYooperGreensDbContext
{
DbSet<Seed> Seeds { get; set; }
DbSet<Order> Orders { get; set; }
}
public class YooperGreensDbContext : DbContext, IYooperGreensDbContext
{
public YooperGreensDbContext()
:base("yoopergreens")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
ModelConfiguration configuration = new ModelConfiguration();
modelBuilder.Configurations.Add(configuration.Seed);
modelBuilder.Configurations.Add(configuration.Order);
}
public DbSet<Seed> Seeds { get; set; }
public DbSet<Order> Orders { get; set; }
}
Create Configuration Classes for each model class
public class OrderConfiguration: EntityTypeConfiguration<Order>
{
public OrderConfiguration()
{
HasKey(o => o.OrderId);
HasRequired(o => o.Seed).WithMany(o => o.Orders);
}
}
public class SeedConfiguration : EntityTypeConfiguration<Seed>
{
public SeedConfiguration()
{
HasKey(s => s.SeedId);
}
}
Create Centralized Configuration file
public class ModelConfiguration
{
public SeedConfiguration Seed { get { return new SeedConfiguration(); } }
public OrderConfiguration Order { get { return new OrderConfiguration(); } }
}
Create a custom DB initializer to seed data into database:
- CreateDatabaseIfNotExists
- DropCreateDatabaseIfModelChanges
- DropCreateDatabaseAlways
{
public YooperGreensDbInitializer()
{
}
protected override void Seed(YooperGreensDbContext context)
{
IList<Seed> seeds = new List<Seed>
{
new Seed {}
};
context.Seeds.AddRange(seeds);
base.Seed(context);
}
}
Set this DB initializer class in context class's constructor
public YooperGreensDbContext()
:base("yoopergreens")
{
Database.SetInitializer(new YooperGreensDbInitializer());
Configuration.ProxyCreationEnabled = false;
}
This post is for the purpose of my notes only and sometimes a rant.
“I invented nothing new. I simply assembled the discoveries of other men behind whom were centuries of work. Had I worked fifty or ten or even five years before, I would have failed. So it is with every new thing. Progress happens when all the factors that make for it are ready and then it is inevitable. To teach that a comparatively few men are responsible for the greatest forward steps of mankind is the worst sort of nonsense.”Henry Ford
No comments:
Post a Comment