ef core针对没有主键的表的查询
同事搞了一个存储过程,并且设置了定时计划,将存储过程的表定时插入某个表(A表)中,但是在使用EF Core的反向工程(Scaffold-DbContext)的时候,由于这个表没有主键,所以一直无法建立对应的实体类,我的解决方案如下:
首先获取脚本的create语句,然后加一句 id int primary key,直接创建表(B表),然后反向生成B表的实体类,删除id列,修改DbContext中B表的fluent api,在modelBuilder.Entity<B>下面添加一句entity.HasKey(c => c.实际上的主键).HasName("PrimaryKey_xxx");就好了
但是这样做只能在已知A表中存在唯一值的列的情况下,如果表中不存在唯一列,就没办法了.当然,也可以在创建A表的时候就设置好PK,这样也能成功反序列化,或者加入rowid到A表中,默认rowid为PK也行,就当曲线救国吧
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步