如何使用对象但不在EF-C#MVC中更新它

时间:2016-04-06 12:24:39

标签: c# .net asp.net-mvc entity-framework asp.net-mvc-4

我正在使用Code First方法的现有数据库。

我将使用数据库中的所有新表,除了我需要使用的一个现有表。我只希望能够读取此表,如果我调用update-database,则不会发生任何更改。我将如何解决这个问题?

如果我使用类似下面的代码那么它完​​全被排除在上下文之外但如果我在OnModelCreating中删除了忽略行,那么我遇到了update-database命令的问题,因为它已经存在于db中(和我一样)提到,我不想随时更新此表)

public class DBContext : IdentityDbContext<ApplicationUser>
{
    public DBContext()
       : base("DefaultConnection", throwIfV1Schema: false)
    {
    }

    public DbSet<person> Persons { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
        modelBuilder.Ignore<person>();
    }

    public static DBContext Create()
    {
        return new DBContext();
    }
}

1 个答案:

答案 0 :(得分:1)

我将代码更改为如下所示

public class DBContext : IdentityDbContext<ApplicationUser>
{
public DBContext()
   : base("DefaultConnection", throwIfV1Schema: false)
{
}

//public DbSet<person> Persons { get; set; }
public DbQuery<person> Persons
{
    get
    {
        // Don't track changes to query results
        return Set<person>().AsNoTracking();
    }
}


protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();

    modelBuilder.Entity<person>();
}

public static DBContext Create()
{
    return new DBContext();
}

}

*请注意,我的迁移已在此时启用

然后我收到错误“数据库中已经有一个名为'person'的对象。”

然后跑 PM&GT;添加迁移FirstMigration

执行此操作后,删除迁移脚本中的创建和删除表

运行 PM&GT;更新数据库 现在应该可以了。

我使用本文中的信息修复了所有这些:https://blog.rajsoftware.com/2014/07/12/entity-framework-code-first-automatic-migration-existing-tables/