C# EF 使用sqlite 数据库出现表名出现dbo的坑
Posted HelloLLLLL
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# EF 使用sqlite 数据库出现表名出现dbo的坑相关的知识,希望对你有一定的参考价值。
当ef使用sqlite时,正常情况映射的表名是没有dbo开头的。这个dbo是映射的sa用户,而sqlite是没有用户的。所以映射出的sql语句是查不到数据的。
我在网上找半天解决方案,都不得行。后来,我用ef的querysql方法写原生sql,应该来说,是能有数据的,但是查出来依然没有数据。
这个时候,我调试,发现 对象属性的Database字符串不对,尽然是mssql的,也就是一个默认的字符串,根本不是我在配置文件写的连接字符串。
这个时候才恍然大悟,我数据层是分出来的项目,配置的app.config 是数据层的,而ui应用层的app.config里面没有连接字符串,所以ef就给我来个默认的。
这样子,即使找不到本来的数据库,也不会报错。我心里默认认为既然都能运行,肯定是连接的是我在数据层配置的数据库,就没想起ef会在找不到连接字符串时,
默认使用mssql数据库,而这个mssql就带用户模式,就会有dbo出现,所以生成的sql 表名会出现dbo了。
最后:我在应用层配置上连接字符串,问题就解决了。以后,遇到相似情况,记得看看再配置文件配置的属性是否真的在调试时的对象里还原了的。
也不要一遇到问题就百度,冷静下来,不急躁,慢慢分析。
以上是关于C# EF 使用sqlite 数据库出现表名出现dbo的坑的主要内容,如果未能解决你的问题,请参考以下文章
在内存中使用 SQLite 运行 EF Core - 未配置数据库提供程序