gpt4 book ai didi

c# - Entity Framework 6 自动迁移在生产服务器上定期重建表

转载 作者:行者123 更新时间:2023-11-30 23:02:43 26 4
gpt4 key购买 nike

每天将我的项目重新部署到生产服务器后,它会在数据库中重建两个表(BatchImportDatas 和 BatchImportLogs),删除这些表中的所有数据。但是,这不会发生在我的开发数据库上,只会发生在两个表上,尽管应用程序中的许多其他表也由 EF 6 自动迁移管理。由于我使用的是自动迁移,因此在应用程序的迁移文件夹中未生成任何迁移文件,但我确信 EF 迁移是罪魁祸首,因为发生这种情况时会在 _MigrationHistory 表中输入迁移条目。我已经删除了 _MigrationHistory 表中的所有相关记录并强制重建受影响的数据库表,但这并没有解决这个问题。我不想删除所有迁移记录并重建整个生产数据库,因为部分应用程序正在使用中,而数据库中的其他表包含实时数据。以下是我的项目的 EF 配置详细信息。任何建议将不胜感激,谢谢。

迁移配置文件:

namespace SYSTEM_Base.Migrations
{
using System;
using System.Data.Entity;
using System.Data.Entity.Migrations;
using System.Linq;

internal sealed class newDb_Configuration : DbMigrationsConfiguration<SYSTEM_Base.Entities.Commissions.CommissionsBase_New>
{
public newDb_Configuration()
{
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = false;
}

protected override void Seed(SYSTEM_Base.Entities.Commissions.CommissionsBase_New context)
{
//context.Database.ExecuteSqlCommand("DBCC CHECKIDENT('BatchImportLogs', RESEED, 1000);");
}
}
}

DbContext(数据库核心配置):

using SYSTEM_Base.Migrations;
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Providers.Entities;
using System.Web.Security;

namespace SYSTEM_Base.Entities.Commissions
{
public class CommissionsBase_New : DbContext
{
public CommissionsBase_New() : base("SYSTEM") { }

public DbSet<MembershipAddProperty> MembershipAddProperties { get; set; }

public DbSet<AppSetting> AppSettings { get; set; }

public DbSet<ReportRoleLevel> ReportRoleLevels { get; set; }

public DbSet<ResetPasswordRequest> ResetPasswordRequests { get; set; }

public DbSet<BatchImportData> BatchImportData { get; set; }

public DbSet<BatchImportLog> BatchImportLog { get; set; }

protected override void OnModelCreating(DbModelBuilder builder)
{
Database.SetInitializer(new MigrateDatabaseToLatestVersion<CommissionsBase_New, newDb_Configuration>());
}
}
}

Dev 数据库中的最后 10 条 _MigrationHistory 记录:

Last 10 _MigrationHistory records in Dev Database:

生产数据库中的最后 10 条 _MigrationHistory 记录:

Last 10 _MigrationHistory records in Production Database:

最佳答案

听起来您有多个生产代码实例使用不同版本的已定义 EF 上下文。如果是这种情况,请确保包含迁移脚本的 DLL 都针对同一版本运行。否则,您将遇到您描述的数据库架构不断升级/降级的场景

您提到的版本不是包含您的 CommissionsBase_New 和/或您的 newDb_Configuration 的程序集版本,而是 EntityFramework.dll 版本。

从您的日志中可以清楚地看出,您的应用程序有 2 个版本在生产中运行,这意味着您可能有 2 个(或更多)不同版本的生成程序集,其中包含您的 CommissionsBase_New 和/或newDb_Configuration

关于c# - Entity Framework 6 自动迁移在生产服务器上定期重建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50335096/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com