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)