【问题标题】:Entity Framework COde FIrst migration existing tableEntity Framework COde FIrst 迁移现有表
【发布时间】:2015-09-08 08:51:43
【问题描述】:

我有一个(奇怪的)情况。 我首先使用实体​​框架代码,但我必须附加到现有数据库。

我不必在我的对象模型中映射数据库的每个表。所以我想在需要时迁移单个表。 我试图更好地解释。我的数据库有大约 100 个表,但我只需要在模型中映射 3 或 4 个。我已经在 c# 中创建了我的类,现在我想用我需要的表来映射这些类。

有可能吗?我必须进行迁移吗?

更新 这是我的课:

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);
    }
}

这里是表格:

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]

【问题讨论】:

    标签: entity-framework code-first entity-framework-migrations


    【解决方案1】:

    可能:是的

    迁移:没有。如果您需要迁移,您可能会遇到问题,因为在这种情况下您没有 __migrationHistory 表(因为数据库是“现有的”,与“由 EF 创建”相反)。

    但答案是肯定的。

    创建你的类,创建一个包含 DbSet 的 DbContext,“等等”。

    【讨论】:

    • 这还不够...当我尝试插入数据库表时,我收到此消息:The model backing the 'PublicAreaContext' context has changed since the database was created. Consider using Code First Migrations to update the database.. 给我 2 分钟,我更新问题
    • 您的数据库中有 __migrationHistory 表吗?
    • 这意味着数据库不“存在”。您无权访问与 Db 对应的上下文类吗?否则你可以使用Database.SetInitializer&lt;MyContext&gt;(null);stackoverflow.com/questions/10623260/…
    • 奇怪,我已经解决了删除__migrationHistory并启动以下命令:Update-Database -verbose -StartUpProjectName MyProject int the Package Manager Console
    • 并不奇怪:危险。有一个访问数据库的历史上下文(创建 __migrationHistory 表的那个)。现在这个上下文和依赖它的应用程序可能会变得不稳定。
    猜你喜欢
    • 1970-01-01
    • 2017-10-12
    • 1970-01-01
    • 1970-01-01
    • 2014-05-08
    • 1970-01-01
    • 1970-01-01
    • 2017-11-16
    • 2014-09-01
    相关资源
    最近更新 更多