You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EF Core DB First 如何在不同.NET Core项目配置实体关联

EF Core DB First 跨项目拆分实体与DbContext实现方案

Scaffold-DbContext 默认将所有生成文件输出到包管理器控制台选中的默认项目中,仅指定单项目内目录参数无法实现跨项目文件输出,按以下步骤配置即可达成目标:

前置配置

  • 解决方案下提前创建两个独立类库:
    • Domain类库:新建Entities文件夹(即计划存放实体类的Entity文件夹,命名可自定义)
    • Persistence类库:新建DbContext文件夹,为Persistence项目添加对Domain项目的项目引用,确保依赖方向为Persistence引用Domain,避免循环依赖
  • 将配置了数据库连接字符串的可执行项目(通常是API/Web启动项目)设为解决方案启动项目,打开NuGet包管理器控制台,将控制台顶部的「默认项目」下拉选项选中Persistence类库
  • 为对应项目安装匹配版本的NuGet包:
    • 启动项目、Persistence项目安装Microsoft.EntityFrameworkCore.SqlServer、Microsoft.EntityFrameworkCore.Tools
    • Domain项目仅需安装Microsoft.EntityFrameworkCore核心包
  • 确认启动项目的appsettings.json中已写入正确的数据库连接字符串,保证Name=connectionString可正常读取配置

执行脚手架命令

命令中跨项目路径需写相对于Persistence项目根目录的相对路径,完整命令如下:

Scaffold-DbContext -Connection Name=connectionString -Provider Microsoft.EntityFrameworkCore.SqlServer -ContextDir DbContext -OutputDir ../Domain/Entities -Namespace Domain.Entities -ContextNamespace Persistence.DbContext -Force

参数说明

  • -ContextDir DbContext:默认项目选中Persistence时,该参数会将DbContext生成到Persistence项目下的DbContext文件夹内
  • -OutputDir ../Domain/Entities:从Persistence项目根目录向上返回一层到解决方案根目录,再进入Domain项目的Entities文件夹,所有实体类将生成到该路径下
  • -Namespace Domain.Entities:为生成的实体类指定匹配Domain项目的命名空间,与实体存放路径对应
  • -ContextNamespace Persistence.DbContext:为生成的DbContext指定匹配Persistence项目的命名空间,与上下文存放路径对应

生成后校验

  • 实体类全部存放在Domain项目的Entities文件夹中,命名空间为Domain.Entities,无额外外部依赖
  • DbContext存放在Persistence项目的DbContext文件夹中,会自动添加对Domain.Entities的引用,所有DbSet<T>属性的实体类型均来自Domain项目,无需手动修改引用关系
  • 后续需要同步数据库结构更新实体时,直接重新执行上述命令即可,-Force参数会自动覆盖已生成的旧文件,不会破坏项目引用

常见问题处理

  • 执行命令提示路径不存在:先确认解决方案下两个类库的目录层级,若类库未和解决方案文件同级存放,对应调整-OutputDir后的相对路径层级即可
  • 提示找不到连接字符串:检查启动项目是否设置正确,确认启动项目的配置文件中存在对应名称的连接字符串,不要将类库项目设为启动项目执行脚手架命令
  • 出现循环引用报错:检查是否误给Domain项目添加了对Persistence的引用,删除该引用即可,正确依赖方向应为启动项目引用Persistence,Persistence引用Domain

内容的提问来源于stack exchange,提问作者Samvel Yeghikyan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 23:01:10