EF Scaffold-DbContext Unable to generate entity type for table

如果数据库表没有主键,在程序包控制台使用Scaffold-DbContext命令生成表实体时会发生以下错误,导致没有生成对应的数据库表实体Model。

Unable to identify the primary key for table 'dbo.xxx'.
Unable to generate entity type for table 'dbo.xxx'.

 

 

 

解决方法:

升级到EF Core3.0

可参看https://stackoverflow.com/questions/54245765/scaffolding-database-first-ef-core-table-with-no-primary-key

 

导致问题:

在升级EF Core3.0后,同一解决方案下的其它库有可能存在引用包的冲突,如下所示:

严重性 代码 说明 项目 文件 行 禁止显示状态
错误    检测到 Microsoft.EntityFrameworkCore.Abstractions 存在版本冲突。直接从项目引用包可解决此问题。 
WebSiteService -> Microsoft.EntityFrameworkCore 3.1.2 -> Microsoft.EntityFrameworkCore.Abstractions (>= 3.1.2) 
WebSiteService -> Microsoft.AspNetCore.App 2.2.0 -> Microsoft.EntityFrameworkCore.Abstractions (>= 2.2.0 && < 2.3.0).

 

同一解决方案的另一个项目中,引用了 Microsoft.AspNetCore.App 2.2.0 , Microsoft.AspNetCore.App 2.2.0 又引用了 Microsoft.EntityFrameworkCore.Abstractions ,它的版本是(>= 2.2.0 && < 2.3.0).。

类库新升级的Microsoft.EntityFrameworkCore 3.1.2 引用的Microsoft.EntityFrameworkCore.Abstractions,它的版本是 (>= 3.1.2) 。

 

导致两者包引用冲突。而Microsoft.AspNetCore.App 2.2.0又是一个元包,参考https://www.cnblogs.com/TianFang/p/10582289.html。升级了后很多地方又要跟着升级。

 

最后:

还是在表里加上主键吧,省事。

 

参考文章:

https://stackoverflow.com/questions/54245765/scaffolding-database-first-ef-core-table-with-no-primary-key

https://www.cnblogs.com/DNLi/archive/2018/08/23/9524976.html

https://www.cnblogs.com/souphm/p/12060102.html

 

posted @ 2020-03-02 10:49  努力吧兄Dei  阅读(487)  评论(0编辑  收藏  举报