public string Name { get; private set; }
public string Family { get; private set; }
public string PhoneNumber { get; private set; }
public string Email { get; private set; }
public string Password { get; private set; }
public string AvatarName { get; set; }
public bool IsActive { get; set; }
public Gender Gender { get; private set; }
public List<UserRole> Roles { get; }
public List<Wallet> Wallets { get; }
public List<UserAddress> Addresses { get; }
public List<UserToken> Tokens { get; }
}
در این مثال میخواهیم تنظیمات مربوط به مدل رو در کلاس جداگانه ای قرار بدیم وبعد در کلاس context در متد OnModelCreating فراخوانی کنیم که این باعث سازماندهی بهتر و نگهداری آسان تنظیمات مدل ها میشود.البته
در این مثال User اگریگیت روت(AggregateRoot) هست و UserAddress ،UserToken ،Wallet، UserRole چایلدهاش هستند.
طبق مراحل زیر انجام میدیم:
یک کلاس تنظیمات برای User ایجاد میکنیم که از IEntityTypeConfiguration پیروی کند.
internal class UserConfiguration : IEntityTypeConfiguration
{
2.در کلاس ShopContext، میتوانیم از متد ApplyConfigurationsFromAssembly برای فراخوانی تمام تنظیمات پیکربندی مدلها از یک اسمبلی خاص استفاده کنیم.
public class ShopContext : DbContext
{
public ShopContext(DbContextOptions<ShopContext> options):base(options)
{
}
public DbSet<User> Users { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{ // نشه تا کارایی بالا برهTrack کد زیر باعث میشه هر کوئری که روی این کانتکس اجرا میشه
optionsBuilder.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);
base.OnConfiguring(optionsBuilder);
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.ApplyConfigurationsFromAssembly(typeof(ShopContext).Assembly);
base.OnModelCreating(modelBuilder);
}
تنظیمات Fluent API برای کلاس User :
public class User : AggregateRoot {
}
در این مثال میخواهیم تنظیمات مربوط به مدل رو در کلاس جداگانه ای قرار بدیم وبعد در کلاس context در متد OnModelCreating فراخوانی کنیم که این باعث سازماندهی بهتر و نگهداری آسان تنظیمات مدل ها میشود.البته در این مثال User اگریگیت روت(AggregateRoot) هست و UserAddress ،UserToken ،Wallet، UserRole چایلدهاش هستند. طبق مراحل زیر انجام میدیم:
internal class UserConfiguration : IEntityTypeConfiguration
{
}
2.در کلاس ShopContext، میتوانیم از متد ApplyConfigurationsFromAssembly برای فراخوانی تمام تنظیمات پیکربندی مدلها از یک اسمبلی خاص استفاده کنیم.
public class ShopContext : DbContext {
}