sqliteを使用するときに流れる穴

2204 ワード

以前はずっとsqliteを使っていました.net 1.0.66.0バージョンNet 4の次のプログラムは、宛先マシンに配備されたときにwinformプログラムが常に実行時に欠けているという問題を記述しています.実行時に装着しても問題が発生する場合があります.その後、ハイブリッドモードの問題であることがわかりました.当時、次の構成を追加して解決しました.
 
<startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/>
 </startup>

1年ぶりにsqliteを使います.net 1.0.89.0またこの問題にぶつかって、今度これをプラスしても効果がなくて、その上間違いを報告しないでdllなどの間違いが欠けていることを提示して、ただ新聞の“System.Threading.ThreadExceptionEventArgs”のニマを捕まえて私の人柄が悪いことを報告して、これはどんな間違いで、この異常な範囲はとても広いです!ダウンロード実行時に走demoがインストールされているのは正常ですが、プログラムが間違っています.
 
問題のロック:
やはり構成の問題です.苦労した結果、EF for sqliiteが使用されていることがわかりました.プロファイルに次のノードを追加する必要があります.
<system.data>
    <DbProviderFactories>
      <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, Version=1.0.89.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" />
    </DbProviderFactories>
  </system.data>

  
まとめ:
人柄に問題があるんだよ.いつも問題を解決しても原理を探さないなんて、科学的じゃないよ.
なぜなら、EFはSQLite Data Providerを使用してDbProviderFactoriesを構築する際にsqliteのバージョンなどの情報を構成から読み出す必要があり、ObjectContextオブジェクトを正常にインスタンス化することができるからです.
 
また、妖怪に遭遇することもあります.
using (ScanLocalDbEntities db = new ScanLocalDbEntities(dbConnStr))
            {
                db.DBExecute("delete from ImportPrdSKU_Info");
                db.DBExecBatchSQL(sqls);
                System.Threading.Thread.Sleep(300);        
                db.Refresh(System.Data.Objects.RefreshMode.StoreWins,db.SKU_Info);                
                db.Connection.Close();
            }

usingの後、ファイルストリームでそのデータベースファイルを操作すると、いつも別のスレッドが占有されていると言われています.まさかClose Connectがないのですか?閉じてもだめです.私の常識を超えて、気絶しました.基礎が悪いですね.いったいプログラムを書くことができますか.
GCを追加しました.Collect();普通だ...