FileContextCore เป็น "ฐานข้อมูล"-ผู้ขับขี่สำหรับ Entity Framework Core และเพิ่มความสามารถในการจัดเก็บข้อมูลในไฟล์ ช่วยให้การพัฒนาอย่างรวดเร็วเนื่องจากข้อได้เปรียบของการคัดลอกแก้ไขและลบไฟล์
เฟรมเวิร์กนี้ใช้ความคิดของ fileContext โดย devmentor (https://github.com/pmizel/devmentor.context.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 นอกจากนี้คุณยังสามารถแทนที่วิธี OnConfiguring ของ DBContext ของคุณเพื่อใช้การตั้งค่า:
protected override void OnConfiguring ( DbContextOptionsBuilder optionsBuilder )
{
optionsBuilder . UseFileContextDatabase ( ) ;
} สำหรับตัวอย่างง่าย ๆ ลองดู: ตัวอย่าง
นอกจากนี้คุณยังสามารถเล่นกับตัวอย่างนี้บน dotnetfiddle.net: Demo
โดยค่าเริ่มต้นส่วนขยายจะใช้ JSON -Serialization และ DefaultFileManager
คุณสามารถใช้ serializer ที่แตกต่างกันเพื่อรองรับวิธีการทำให้เป็นอนุกรมอื่น ๆ
serializes ข้อมูลโดยใช้ system.xml
optionsBuilder . UseFileContextDatabase < XMLSerializer , DefaultFileManager > ( ) ;serializes ข้อมูลโดยใช้ csvhelper (https://joshclose.github.io/csvhelper/)
optionsBuilder . UseFileContextDatabase < CSVSerializer , DefaultFileManager > ( ) ;serializes ข้อมูลโดยใช้ newtonsoft json.net (http://www.newtonsoft.com/json)
optionsBuilder . UseFileContextDatabase < JSONSerializer , DefaultFileManager > ( ) ;หรือเพียงแค่
optionsBuilder.UseFileContextDatabase();
Serializes Data to BSON โดยใช้ newtonsoft json.net (http://www.newtonsoft.com/json)
optionsBuilder . UseFileContextDatabase < BSONSerializer , DefaultFileManager > ( ) ;บันทึกไฟล์เป็น. xlsx-file และเปิดใช้งานการแก้ไขข้อมูลอย่างรวดเร็วโดยใช้ excel
ใช้การใช้งาน EEPLUS สำหรับ. NET CORE (https://github.com/vahidn/epplus.core)
optionsBuilder . UseFileContextDatabase < EXCELStoreManager > ( ) ;หากคุณต้องการรักษาความปลอดภัยไฟล์ excel ด้วยการใช้รหัสผ่าน:
optionsBuilder . UseFileContextDatabase < EXCELStoreManager > ( password : "<password>" ) ;เพื่อทำงานบนระบบ Linux
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" ) ; คุณสามารถสร้าง Serializer, File Manager และ Store Manager ได้หากคุณต้องการ
หากคุณต้องการสร้าง serializer ที่กำหนดเองให้ใช้อินเทอร์เฟ ISerializer
หากคุณต้องการควบคุมการจัดเก็บข้อมูลการใช้งานอินเทอร์เฟซ IFileManager
หากคุณต้องการสร้างผู้จัดการร้านค้าที่ใช้ทั้ง IStoreManager
หลังจากเพิ่มผู้ให้บริการที่กำหนดเองคุณต้องเพิ่มมันเป็นการพึ่งพาชั่วคราวในการฉีดพึ่งพา
อย่าลังเลที่จะสร้างประชาสัมพันธ์กับผู้ให้บริการรายใหม่ของคุณและฉันจะเพิ่มลงใน FileContextCore
| เวอร์ชัน fileContext | EF Core เวอร์ชัน |
|---|---|
| 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)