Entity framework 实体框架代码首次迁移现有表
我有一个(奇怪的)情况。 我首先使用实体框架代码,但我必须附加到现有数据库 我不必映射对象模型中数据库的每个表。因此,我希望在需要时迁移单个表。 我试着更好地解释。我的数据库有大约100个表,但我需要在我的模型中只映射3或4个表。我已经用c#创建了我的类,现在我想用我需要的表映射这些类 有可能吗?我必须迁移吗 更新 这是我的班级:Entity framework 实体框架代码首次迁移现有表,entity-framework,code-first,entity-framework-migrations,Entity Framework,Code First,Entity Framework Migrations,我有一个(奇怪的)情况。 我首先使用实体框架代码,但我必须附加到现有数据库 我不必映射对象模型中数据库的每个表。因此,我希望在需要时迁移单个表。 我试着更好地解释。我的数据库有大约100个表,但我需要在我的模型中只映射3或4个表。我已经用c#创建了我的类,现在我想用我需要的表映射这些类 有可能吗?我必须迁移吗 更新 这是我的班级: public class PricePlan { public Guid Id { get; set; } public String Name {
public class PricePlan
{
public Guid Id { get; set; }
public String Name { get; set; }
public Double ActivationPrice { get; set; }
}
以下是上下文:
public class PublicAreaContext : DbContext
{
public DbSet<PricePlan> PricePlans { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<PricePlan>()
.HasKey(pp => new { pp.Id });
base.OnModelCreating(modelBuilder);
}
}
可能:是的
迁移:否。如果您需要迁移,您可能会遇到问题,因为在这种情况下,您没有uu migrationHistory表(因为数据库“existing”而不是“created by EF”)
但答案肯定是肯定的
创建您的类,创建一个包含DbSet的DbContext,“et voilá”。这还不够。。。当我尝试对数据库表进行插入时,我得到以下消息:
支持“PublicAreaContext”上下文的模型自数据库创建以来已更改。考虑使用代码第一迁移来更新数据库
。给我2分钟,我更新问题您的数据库中是否有uu migrationHistory表?这意味着数据库不“存在”。您是否有权访问对应于数据库的上下文类?否则,您可以使用Database.SetInitializer(null)代码>奇怪,我已经解决了删除
并启动以下命令的问题:\u迁移历史记录
在
不奇怪:危险。有一个访问数据库的历史上下文(创建u migrationHistory表的上下文)。现在,这个上下文和依赖它的应用程序可能会变得不稳定。包管理器控制台中更新数据库-verbose-StartUpProjectName MyProject
ALTER TABLE [dbo].[PricePlan]( [Id] [uniqueidentifier] NOT NULL, [Name] [varchar](50) NULL, [ActivationPrice] [decimal](5, 2) NULL, ... //Other columns CONSTRAINT [PK_Price_Plans] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]