本来我首先使用EF 6代码创建一个新的数据库和两个新的表.代码是:
public class TestingContext : DbContext,IDisposable { public DbSet<CallDataRecord> CallDataRecords { get; set; } public DbSet<Attempt> Attempts { get; set; } public TestingContext() : base("Testing") { Database.SetInitializer<TestingContext>(new MigrateDatabaseToLatestVersion<TestingContext,GenericIVR.Migrations.Configuration>()); } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<Attempt>().Hasrequired(t => t.CallDataRecord).WithMany(a => a.Attempts).HasForeignKey(t => t.FKTaskId); modelBuilder.Entity<Attempt>().Property(x => x.AttemptId).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity).Isrequired(); modelBuilder.Entity<CallDataRecord>().Property(x => x.TaskId).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity).Isrequired(); } }
现在我的策略改变了,我不想要一个新的DB.我想将新的表添加到现有的数据库,如DevDB.
更新:
连接字符串为:
<connectionStrings> <add name="Testing" connectionString="Data Source=dddd.corporate.xxxx.com; Initial Catalog=Testing; User ID=sa; Password=password; MultipleActiveResultSets=True" providerName="System.Data.sqlClient" />
解决方法
如果您有自动迁移设置,这应该很直接.
如果没有,您将需要运行Enable-Migrations -EnableAutomaticMigrations
也许先进一步阅读这里,但是:http://msdn.microsoft.com/en-gb/data/jj554735.aspx
对于任何希望用新表更新数据库的用户(例如,我想添加一个UserAttachment表与我现有的用户表一起使用)首先使用EF代码,请执行以下操作:
启用自动迁移后,您应该确保拥有…
1.)根据您的需要创建新的模型.
2.)创建您的配置文件,具体如下:
class UserAttachmentConfiguration : EntityTypeConfiguration<UserAttachment> { public UserAttachmentConfiguration() : base() { HasKey(p => p.UserId); ToTable("UserAttachment"); Hasrequired(t => t.User) .WithOptional(t => t.UserAttachment); } }
3.)将您的DbSet和modelBuilder数据添加到您的主Context.cs文件中
DbSet
public DbSet<UserAttachment> UserAttachment {get; set;}
模型构建器
modelBuilder.Configurations.Add(new UserAttachmentConfiguration());
4.)通过Visual Studio的Package Manager Console运行update-database,确保从下拉列表中选择了正确的项目,这很可能是一个名为project的.Repository.
您的新表现在应该存在于您的数据库中.