public class EntityContext : DbContext
{
public EntityContext(): base(ConfigurationManager.AppSettings["db_member"])
{
//程序启动时自动升级数据库,通过应用所有挂起的迁移
Database.SetInitializer<EntityContext>(
new MigrateDatabaseToLatestVersion<EntityContext, MigrationsConfiguration>());
}
/// <summary>
/// 虚拟充值产品
/// </summary>
public DbSet<VChargeProduct> VChargeProducts { get; set; }
/// <summary>
/// 虚拟充值产品组
/// </summary>
public DbSet<VChargeProductGroup> VChargeProductGroups { get; set; }
/// <summary>
/// 虚拟充值组渠道商
/// </summary>
public DbSet<VChargeGroupMac> VChargeGroupMacs { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
#region 金额长度及小数点保留位数
modelBuilder.Entity<VChargeProduct>().Property(p => p.Price).HasPrecision(10, 3);
modelBuilder.Entity<VChargeProduct>().Property(p => p.CentCommProfit).HasPrecision(10, 3);
modelBuilder.Entity<VChargeProduct>().Property(p => p.UserProfit).HasPrecision(10, 3);
modelBuilder.Entity<VChargeProduct>().Property(t => t.CentCommType).IsUnicode(false);
modelBuilder.Entity<VChargeProduct>().Property(t => t.UserProfitType).IsUnicode(false);
modelBuilder.Entity<VChargeProductGroup>().Property(t => t.Title).IsUnicode(false);
#endregion
base.OnModelCreating(modelBuilder);
}
}
internal sealed class MigrationsConfiguration : DbMigrationsConfiguration<EntityContext>
{
public MigrationsConfiguration()
{
AutomaticMigrationsEnabled = true; //任何Model Class的修改將會直接更新DB
AutomaticMigrationDataLossAllowed = true;
}
protected override void Seed(EntityContext context)
{
#region 初始化测试数据
context.VChargeProducts.AddOrUpdate(new VChargeProduct
{
Id = XS.Utils.SequNo.NewId,
CId = 1,
GroupId = 1,
ArsId = 3000, //3000移动
AreaId = 8633, //浙江
Denom = 100, //面额
Price = 99.80M,
CentCommProfit = 100,
UserProfit = 100,
CentCommType = "AbleBalance",
UserProfitType = "AbleBalance"
});
context.VChargeGroupMacs.AddOrUpdate(new VChargeGroupMac
{
Id = XS.Utils.SequNo.NewId,
GroupId = 1,
MacId = 1
});
#endregion
}
}
自定义继承与DbContext数据上下文 一直未能解决。。。
搞不明白你的问题。
一般来说,使用EF的CODE FIRST,不需要搞DbMigrationsConfiguration,有你的代码足够了。
DbMigrationsConfiguration是用来移植的。所谓移植,主要应用于已经发布的项目系统,需要对数据库架构进行调整的时候操作。
数据库移植是不会在运行时执行的,而是通过程序管理控制台来完成。
看了你的移植代码~~~,我一般都不写你这么复杂的,启动移植后,使用add功能添加新的移植脚本(必要时手工编辑),然后使用update命令执行移植或回滚。