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上進行此示例:演示
默認情況下,擴展程序使用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文件中,並可以使用Excel快速編輯數據
使用.NET Core(https://github.com/vahidn/epplus.core)使用EEPLUS實現
optionsBuilder . UseFileContextDatabase < EXCELStoreManager > ( ) ;如果要使用密碼使用Excel文件,請使用:
optionsBuilder . UseFileContextDatabase < EXCELStoreManager > ( password : "<password>" ) ;在Linux-System上運行
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" ) ; 如果沒有配置任何應用程序的所有文件,則將存儲在平面文件夾中。您可以選擇為數據庫定義名稱,所有相應的數據都將保存在子文件夾中。因此,您可以將FileContext使用多個DBContext-Configurations使用。
optionsBuilder . UseFileContextDatabase ( databasename : "database" ) ; 您可以根據需要創建自定義序列化器,文件管理器和商店管理器。
如果要創建自定義序列化器,則實現接口ISerializer 。
如果要控制數據的存儲,則實現Interface 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)