FileContextCoreは、エンティティフレームワークコアの「データベース」 - プロバイダーであり、ファイルに情報を保存する機能を追加します。ファイルをコピー、編集、削除するだけの利点があるため、迅速な開発が可能になります。
このフレームワークは、devmentor(https://github.com/pmizel/devmentor.context.filecontext)によるfilecontextのアイデアに基づいています。
!この拡張機能は、生産システムで使用することを意図していません!
https://www.nuget.org/packages/filecontextcore/
PM > Install-Package FileContextCore
Startup.csでこれを使用します。
public void ConfigureServices ( IServiceCollection services )
{
.. .
services . AddDbContext < Context > ( options => options . UseFileContextDatabase ( ) ) ;
.. .
} OnConfiguringメソッドをオーバーライドしますDBContextのOnConfiguring方法をオーバーライドして、設定を適用することもできます。
protected override void OnConfiguring ( DbContextOptionsBuilder optionsBuilder )
{
optionsBuilder . UseFileContextDatabase ( ) ;
} 簡単な例については、例:例をご覧ください
dotnetfiddle.net:demoでこの例で再生することもできます
デフォルトでは、拡張機能はJSON -SerializationとDefaultFileManagerを使用します
別のシリアナーを使用して、他のシリアル化方法をサポートできます。
System.xmlを使用してデータをシリアル化します
optionsBuilder . UseFileContextDatabase < XMLSerializer , DefaultFileManager > ( ) ;csvhelper(https://joshclose.github.io/csvhelper/)を使用してデータをシリアル化
optionsBuilder . UseFileContextDatabase < CSVSerializer , DefaultFileManager > ( ) ;Newtonsoft json.netを使用してデータをシリアル化する(http://www.newtonsoft.com/json)
optionsBuilder . UseFileContextDatabase < JSONSerializer , DefaultFileManager > ( ) ;またはただ
optionsBuilder.UseFileContextDatabase();
Newtonsoft json.net(http://www.newtonsoft.com/jsonを使用してBSONへのデータをシリアル化
optionsBuilder . UseFileContextDatabase < BSONSerializer , DefaultFileManager > ( ) ;ファイルを.xlsx-fileに保存し、Excelを使用してデータのクイック編集を有効にします
.NET Core(https://github.com/vahidn/epplus.core)にEeplus実装を使用します)
optionsBuilder . UseFileContextDatabase < EXCELStoreManager > ( ) ;パスワードを使用してExcelファイルを保護する場合:
optionsBuilder . UseFileContextDatabase < EXCELStoreManager > ( password : "<password>" ) ;Linux-Systemsで実行します
sudo apt-get update
sudo apt-get install libgdiplus
ファイルマネージャーは、ファイルの保存方法を制御します。
デフォルトのファイルマネージャーは、通常のファイルを作成するだけです。
optionsBuilder . UseFileContextDatabase < JSONSerializer , DefaultFileManager > ( ) ;暗号化されたファイルマネージャーは、パスワードでファイルを暗号化します。
optionsBuilder . UseFileContextDatabase < JSONSerializer , EncryptedFileManager > ( password : "<password>" ) ; デフォルトでは、ファイルはappdataと呼ばれる実行中のアプリケーションのサブフォルダーに保存されます。この動作を制御する場合は、カスタム場所を定義することもできます。
optionsBuilder . UseFileContextDatabase ( location : @"C:UsersmjanatzekDocumentsProjectstest" ) ; 何も構成されていない場合、アプリケーションのすべてのファイルがフラットフォルダーに保存されます。オプションでデータベースの名前を定義でき、対応するすべてのデータがサブフォルダーに保存されます。したがって、複数のDBContext構成でFileContextを使用できます。
optionsBuilder . UseFileContextDatabase ( databasename : "database" ) ; 必要に応じて、カスタムシリアイザー、ファイルマネージャー、ストアマネージャーを作成できます。
カスタムシリアナーを作成する場合は、インターフェイスISerializerを実装します。
データの保存を制御する場合は、インターフェイスIFileManagerを実装します。
両方ともIStoreManagerを実装するストアマネージャーを作成したい場合。
カスタムプロバイダーを追加した後、依存関係の注入に一時的な依存関係として追加する必要があります。
新しいプロバイダーでPRを自由に作成してください。FileContextCoreに追加します。
| FileContextバージョン | EFコアバージョン |
|---|---|
| 3.4。* | 3.1.0 |
| 3.3。* | 3.0.0 |
| 3.2。* | 3.0.0 |
| 3.0.1/3.0.0/2.2.6 | 2.2.6 |
| 2.2.0 | 2.2.0 |
EF Coreは現在、モデルの注釈を使用してカスタムテーブル名を定義することをサポートしていないようです。 OnModelCreating -methodを使用して、カスタムテーブル名を定義します。
protected override void OnModelCreating ( ModelBuilder modelBuilder )
{
modelBuilder . Entity < User > ( )
. ToTable ( "custom_user_table" ) ;
}これにより、たとえば、 custom_user_table.jsonというファイルにデータが保存されます。
Morris Janatzek(Morrisjdev)