یک نکتهی تکمیلی: پیاده سازی IXmlRepository مایکروسافت برای EF Core
از زمان ارائهی NET Core 2.2.، بستهی نیوگت جدید Microsoft.AspNetCore.DataProtection.EntityFrameworkCore ارائه شدهاست که کار آن دقیقا شبیه به پیاده سازی «یک نکتهی تکمیلی: روش ذخیره سازی کلید موقتی تولید شده در بانک اطلاعاتی بجای حافظهی سرور» است که در نظرات فوق ارائه شد.
برای استفادهی از آن، ابتدا بستهی نیوگت آنرا به برنامه اضافه کنید:
dotnet add package Microsoft.AspNetCore.DataProtection.EntityFrameworkCore
سپس Context ای را که بر اساس اینترفیس IDataProtectionKeyContext آن پیاده سازی شدهاست و دارای DbSet جدید از نوع DataProtectionKey است، تعریف کنید:
public class MyKeysContext : DbContext, IDataProtectionKeyContext { // A recommended constructor overload when using EF Core // with dependency injection. public MyKeysContext(DbContextOptions<MyKeysContext> options) : base(options) { } // This maps to the table that stores keys. public DbSet<DataProtectionKey> DataProtectionKeys { get; set; } }
که با اجرای مهاجرتها، یک جدول جدید را با سه فیلد زیر، ایجاد میکند:
public int Id { get; set; } public string FriendlyName { get; set; } public string XmlData { get; set; }
در آخر روش معرفی این Context به سیستم DataProtection به صورت زیر است:
public void ConfigureServices(IServiceCollection services) { // using Microsoft.AspNetCore.DataProtection; services.AddDataProtection() .PersistKeysToDbContext<MyKeysContext>(); }