实体框架 – 如何首先将新表添加到现有数据库代码
本来我首先使用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 对于任何希望用新表更新数据库的用户(例如,我想添加一个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. 您的新表现在应该存在于您的数据库中. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |