C# EF 操作Sqlite 出现问题,有经验的大佬进来指点下,感谢!!!

手在键盘敲很轻 2020-08-25 10:57:14
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<!--<connectionStrings>
<add name="MainDb" connectionString="Data Source=|DataDirectory|\Db.sdf" providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>-->
<system.data>

<DbProviderFactories>
<remove invariant="System.Data.SQLite.EF6" />
<add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
<remove invariant="System.Data.SQLite" />
<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>

</system.data>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework">
<parameters>
<parameter value="System.Data.SqlServerCe.4.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
</providers>
</entityFramework>
</configuration>


如图,每次执行到圈起来那里就报错

System.TypeInitializationException
HResult=0x80131534
Message=The type initializer for 'System.Data.Entity.Internal.AppConfig' threw an exception.
Source=EntityFramework
StackTrace:
at System.Data.Entity.Internal.AppConfig.get_DefaultInstance()
at System.Data.Entity.Internal.LazyInternalConnection..ctor(DbContext context, String nameOrConnectionString)
at System.Data.Entity.DbContext..ctor()
at CSTK.Library.SqliteData.Model.EFDBContext..ctor() in D:\CSTK.Library\CSTK.Library.SqliteData\Model\EFDBContext.cs:line 17
at CSTK.Library.SqliteData.DBOperator..ctor()
at CSTK.CodeTesting.Program.Main(String[] args) in D:\CSTK.Library\CSTK.CodeTesting\Program.cs:line 24

此异常最初是在此调用堆栈中引发的:
[外部代码]

内部异常 1:
ConfigurationErrorsException: Configuration system failed to initialize

内部异常 2:
ConfigurationErrorsException: Unrecognized configuration section system.data. (D:\CSTK.Library\CSTK.CodeTesting\bin\Debug\netcoreapp3.1\CSTK.CodeTesting.dll.config line 9)
第九行是 <system.data>这个节点
...全文
6841 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
strife013 2020-08-25
  • 打赏
  • 举报
回复
为啥用private 的构造函数,直接用public
  • 打赏
  • 举报
回复
引用 1 楼 shawn_yang 的回复:
构造函数没做初始化?
你看下面报的错,这不像是你说的问题
晨易夕 2020-08-25
  • 打赏
  • 举报
回复
sqlite的连接路径呢?
shawn_yang 2020-08-25
  • 打赏
  • 举报
回复
构造函数没做初始化?
正怒月神 2020-08-25
  • 打赏
  • 举报
回复
这里在给你2个方案。
public class EFDBContext: DbContext
    {
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            //注入Sql链接字符串
            optionsBuilder.UseSqlServer(dbpath);
        }

    }
或者 如果你没有把配置文件的 MainDb 注释掉 那么可以直接 public EFDBContext():base("name=MainDb")
正怒月神 2020-08-25
  • 打赏
  • 举报
回复
ConfigurationErrorsException: Configuration system failed to initialize 很明显,就是配置初始化失败。 估计是默认调用了构造函数的关系。 你的无参构造函数改成这样

    
        public EFDBContext()
            : base(dbpath)
        {
        

    }

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧