یک نکتهی تکمیلی: پیاده سازی IXmlRepository مایکروسافت برای EF Core
برای استفادهی از آن، ابتدا بستهی نیوگت آنرا به برنامه اضافه کنید:
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>();
}
به این ترتیب، به صورت خودکار، اطلاعات موقتی کلیدهای
رمزنگاری سیستم data-protection در بانک اطلاعاتی ذخیره شده و یا بازیابی
میشوند.