首页 > 其他分享 >ABP EF Core 删除外键迁移

ABP EF Core 删除外键迁移

时间:2023-05-25 19:56:25浏览次数:43  
标签:Core EF 外键 context Services 迁移 options

使用Code First模式时,会默认添加外键的迁移,外键约束虽然可以保证数据的一致性和完整性,但同样会带来一些问题,比如

  1. 可能带来一定性能影响,从表中插入或删除数据时,数据库都必须检查外键约束是否仍然有效。
  2. 可能会给运维带来困难,因为添加、删除或修改外键可能需要修改其他相关表。

如果想要EF默认不生成外键的迁移,可以使用如下方法。

修改EntityFrameworkCoreModule的ConfigureServices

修改前

public override void ConfigureServices(ServiceConfigurationContext context)
{
    context.Services.AddAbpDbContext<DbContext>(options =>
    {
        /* Add custom repositories here. Example:
         * options.AddRepository<Question, EfCoreQuestionRepository>();
         */
    });

    // 。。。其他代码
}

修改后

public override void ConfigureServices(ServiceConfigurationContext context)
{
    var configuration = context.Services.GetConfiguration();

    context.Services.AddDbContext<DbContext>(options =>
    {
        options.UseSqlServer(configuration["ConnectionStrings:Default"]);
        options.ReplaceService<IMigrationsModelDiffer, MigrationsModelDifferWithoutForeignKey>();
    });

    context.Services.AddAbpDbContext<DbContext>(options =>
    {
        /* Add custom repositories here. Example:
         * options.AddRepository<Question, EfCoreQuestionRepository>();
         */
    });

    // 。。。其他代码
}

此时生成的迁移就不会生成外键约束,但仍会保留索引的迁移。

标签:Core,EF,外键,context,Services,迁移,options
From: https://www.cnblogs.com/cnblogsName/p/17432692.html

相关文章

  • 【题解】Codeforces Round 737 (CF1557)
    VP情况:solve:4/5rank:431st评价:VP了一下,我这个shaberB直接5发罚时,耽误了二十多分钟,以及被D各种细节差点搞死。A.EzzatandTwoSubsequences(*800)题目描述:给定一个序列,将其分为\(2\)个组,要求这两个组的平均值之和最大,组内的数不要求在原序列中连续。题目分析:我们......
  • Win10专业版下如何禁用Windows Defender功能?
    操作步骤如下:1、Win键+R,运行cmd,打开命令提示符;  2、打开“命令提示符(管理员)”,然后输入:regadd“Hkey_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsDefender”/v“DisableAntiSpyware”/d1/tREG_DWORD/f  3、在重启电脑之后,可以看到各种Windows......
  • 【HMS Core】【ML Kit】活体检测FAQ合集
    【问题描述1】使用示例代码集成活体检测SDK时,报错statecode-7001【解决方案】使用示例代码前请详细阅读示例工程中的“README”文件。您需要完成以下操作后才可以运行示例代码。在AppGalleryConnect网站下载自己应用的“agconnect-services.json”文件,拷贝到示例工程的应用级根......
  • .net core 6中使用UEditor记录
    1.在NuGet中添加包:UEditor.Core或通过程序包管理控制台:Install-PackageUEditor.Core  2.添加服务端统一请求接口publicclassUEditorController:Controller{privatereadonlyUEditorService_ueditorService;publicUEditorController(UE......
  • firefox旧版本下载后打开为为最新版怎么办
    firefox默认自动更新为最新版,一定要注意!!!问题描述:我有一个最新版firefox64.0,但最新版不兼容firebug,所以我必须下载旧版本的。在我旧版本下载完成后(这时候我的新版firefox是打开着的,而且处于自动更新状态),旧版本打开,仍然显示是最新版如何查看自己的firefox版本:https://jingyan.baidu.c......
  • Firefox8.0.1及对应firebug1.9.0,firepath0.9.7.1.1插件下载
    firefox8.0.1链接:https://pan.baidu.com/s/1x9M6dimmvQrBee_iSeVcZg提取码:ewy8旧版本安装注意,安装前必看:firefox旧版本下载后打开为为最新版怎么办firebug1.9.0链接:https://pan.baidu.com/s/1g55zj8BjciR4U3Mn1ApqFQ提取码:zfj3firepath0.9.7.1.1链接:https://pan.baidu.com/s/......
  • 创建及使用一个SqlServer的用户自定义表类型(User-Defined Table Type)
    创建一个用户自定义表类型(User-DefinedTableType)CREATETYPE[dbo].[MyTypeName]ASTABLE( [Field1][nvarchar](50)NOTNULL, [Field2][nvarchar](100)NULL, [Field3][nvarchar](50)NULL, [Field4][nvarchar](20)NULL, [Field5][nvarchar](20)NULL)GO直接......
  • Java的CompletableFuture,Java的多线程开发
    三、Java8的CompletableFuture,Java的多线程开发1、CompletableFuture的常用方法以后用到再加runAsync():开启异步(创建线程执行任务),无返回值supplyAsync():开启异步(创建线程执行任务),有返回值thenApply():然后应用,适用于有返回值的结果,拿着返回值再去处理。exceptionally......
  • django之对FileField字段的upload_to的设定
       用django开发,经常要处理用户上传的文件,比如user模型里面如果又个人头像的字段ImageField等等,而django在FielField字段(包括ImageField)的支持和扩展是做的很好的,首先一个问题,是上传的文件,django是放到哪里去了,(note:文件流是不会放到数据库里面的,该字段在数据库中只存储路......
  • OEM报错"Compliance score 51% is below critical threshold"
     OEM报错"Compliancescore51%isbelowcriticalthreshold" 具体邮件报警如下:点击链接,打开oem网页端,点击“查看相容性标准结果”: 选中其中一个安全建议,可以看到下边一般信息中建议打上安全补丁31720783,该补丁是linux版本的OracleDB最后一个PSU补丁(11.2.0.4.201020......