EF Core 7使用Fluent API配置ValidationRule主键未被识别,抛出InvalidOperationException异常
EF Core 7使用Fluent API配置ValidationRule主键未被识别,抛出InvalidOperationException异常
我太懂这种抓耳挠腮的感觉了!你遇到的问题其实是代码里一个容易忽略的小语法错误搞的鬼,EF Core并没有无视你的主键配置,而是前面的代码出问题打断了模型构建的流程。
仔细看你Order实体的Fluent API配置代码:
modelBuilder.Entity<Order>() .ToTable("Order") .HasKey(x => new { x.CompanyId, x.ClientId, x.OrderId }
这里的HasKey方法调用末尾缺少了闭合的括号和分号!正确的写法应该是:
modelBuilder.Entity<Order>() .ToTable("Order") .HasKey(x => new { x.CompanyId, x.ClientId, x.OrderId });
这个语法错误会导致EF Core在执行模型构建逻辑时出现异常,直接中断了后续的配置代码——也就是说,你为ValidationRule设置HasKey(x => x.Code)的代码根本没被执行到!EF Core没读到这个主键配置,自然就会抛出“需要定义主键或使用HasNoKey()”的错误。
你说用属性配置就正常,这也说得通:属性配置是直接标记在实体类上的,不会受Fluent API代码的语法错误影响,EF Core能正常识别到主键属性。
解决方法很简单:
- 补上
Order实体HasKey配置末尾缺失的)和; - 重新运行程序,EF Core就能正确读取到
ValidationRule的主键配置,不会再抛出这个异常了
内容来源于stack exchange
相关产品推荐
相关产品推荐

