مثال 2: چندمستاجری (Multi-Tenancy)
فرض کنید شما یک سیستم مدیریت منابع دارید که برای چند شرکت مختلف (مستاجر) استفاده میشود و میخواهید مطمئن شوید که هر شرکت فقط به دادههای خود دسترسی دارد.
public class Resource
{
public int ResourceId { get; set; }
public string ResourceName { get; set; }
public int TenantId { get; set; }
}
public class ApplicationDbContext : DbContext
{
private readonly int _currentTenantId;
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options, int currentTenantId)
: base(options)
{
_currentTenantId = currentTenantId;
}
public DbSet<Resource> Resources { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Resource>().HasQueryFilter(r => r.TenantId == _currentTenantId);
}
}
class Program
{
static void Main()
{
var options = new DbContextOptionsBuilder<ApplicationDbContext>()
.UseInMemoryDatabase(databaseName: "TestDatabase")
.Options;
int currentTenantId = 1; // شناسه مستاجر فعلی
using (var context = new ApplicationDbContext(options, currentTenantId))
{
// افزودن منابع
context.Resources.AddRange(
new Resource { ResourceName = "Resource1", TenantId = 1 },
new Resource { ResourceName = "Resource2", TenantId = 2 }
);
context.SaveChanges();
// اجرای کوئری: فقط منابع مربوط به مستاجر فعلی بازگردانده میشوند
var resources = context.Resources.ToList();
foreach (var resource in resources)
{
Console.WriteLine($"Resource: {resource.ResourceName}");
}
}
}
مثال 2: چندمستاجری (Multi-Tenancy) فرض کنید شما یک سیستم مدیریت منابع دارید که برای چند شرکت مختلف (مستاجر) استفاده میشود و میخواهید مطمئن شوید که هر شرکت فقط به دادههای خود دسترسی دارد.
public class Resource {
}
public class ApplicationDbContext : DbContext {
}
class Program {
}