質問: 私は何をするEF拡張子を使用してい`BulkSaveChanges`高速にGUIDを保存するときにいるかのように、それはだということなど、節約私がいる問題があり、すべてが完璧に動作、と私はSQLiteのを使用しています`BulkSaveChanges`最初の前にテキストにGUIDを変換しています保存しますが、データ型はBLOBであり、DbContextを介してデータベースから取得したとき、GUIDは認識できません暗黙的にGuidsに。 さらに、EFの`.SaveChanges`を使用すると、すべてが保存され、検索も可能ですが、 `.SaveChanges`は遅くなります。 どんな助けも大歓迎です。 拡張機能へのリンクは次のとおりです: https : //entityframework-extensions.net/bulk-savechanges .SaveChangesと.BulkSaveChangesで保存されるデータのスクリーンショットを次に示します。 .SaveChangesで保存: ![ここに画像の説明を入力してください](https://i.stack.imgur.com/irS3h.png) .BulkSaveChangesで保存: ![ここに画像の説明を入力してください](https://i.stack.imgur.com/5Kxue.png)
回答: 私は物事を機能させることができ、この状況で生きることができました: 1. そのSQLiteはGUIDをサポートしておらず、認識できないデータにBLOBデータ型を提供します。 2. `BulkSaveChanges` **は** 、データを永続化する前に変換するか、 **修正する**必要があります。この場合、TEXTに変換します。 ただし、問題はデータ型がBLOBのままであるため、EFCoreを介して取得したときに、暗黙的にGUIDに逆変換しても機能しないことです。 状況を分析すると、GUIDのデータ型をTEXTに定義できないのはなぜだと思いましたか? `BulkSaveChanges`はとにかくTEXTへの変換を行うためです。そしてその方法で、EFCoreはGUIDがBLOBではなくTEXTとして保存されていることを確認できるため、暗黙的にGUIDに変換する方法を知ることができます。判明した、それは可能です! これが私がしたことです。GUIDを含むエンティティのFluent APIを介してモデルを構築するときに、次の行を追加しました。 ``` entityTypeBuilder .Property(l => l.GUID) .HasConversion(); ``` モデルの構築は次のようになります。 ``` public override void Build(ModelBuilder modelBuilder) { EntityTypeBuilder entityTypeBuilder = modelBuilder.Entity(); entityTypeBuilder .Property(l => l.GUID) .HasConversion(); } ``` 前のGUIDのデータ型: !ここに画像の説明を入力してください 次に、これらの行を追加した後: !ここに画像の説明を入力してください