OK
Published on

ASP.NET Zero'da Organization Unit Extend Nasıl Yapılır?

Authors
  • avatar
    Name
    Oğuzhan Kırçalı
    Twitter

Bir projemde AspNetZero framework'ünü kullanıyorum. Dokümanını kontrol ettiğimde Tenant, User ve Role sınıflarının kolaylıkla genişletilebilir olduğunu farkettim. Benim ihtiyacım ise Organization Unit sınıfı ile ilgiliydi. Non-Abstract sınıfların genişletilmesi ile ilgili bir doküman bölümü vardı, ancak hemen gözüm kesmedi. Biraz daha forumlarda issue'ları kontrol ettikçe temiz bir şekilde dokümanı takip ederek bu ek özellikleri ekleyebilirim gibi geldi ve devamında işe koyuldum.

İlk olarak framework'ün sınıfından kalıtım alarak kendi sınıfımı oluşturdum.

using Abp.Organizations;

namespace MyProject.Organizations
{
    public class MyOrganizationUnit : OrganizationUnit
    {
        public string Address { get; set; }
    }
}

Bu kalıtım işlemini yapıp migration dosyamı oluşturduğumda, Discriminator isminde bir kolon ekleme kodu oluştuğunu gördüm. Bu kolon, verinin hangi sınıfı kullanan bir repository tarafından oluşturulduğunu kaydetmek için otomatik oluşturulmaktadır.

migrationBuilder.AddColumn<string>(
	name: "Discriminator",
	table: "AbpOrganizationUnits",
	nullable: false,
	defaultValue: "");
	
migrationBuilder.AddColumn<string>(
	name: "Address",
	table: "AbpOrganizationUnits",
	nullable: false,
	defaultValue: "");

dotnet ef database update işleminden sonra, veriyi getiren repository'imi de aşağıdaki gibi değiştirdim.

private readonly IRepository<MyOrganizationUnit, long> _organizationUnitRepository;

Daha sonra projemi çalıştırıp sayfaları gezdiğimde, hiçbir organization unit kaydının gelmediğini farkettim. Biraz kurcalayınca, yeni gelen Discriminator kolonunun değerinin, sınıfın adı ile dolu olması gerektiğini anladım. AbpOrganizationUnits tablosuna eklenen Discriminator kolonunu, önceki verilerin erişilebilir olması için MyOrganizationUnit string değeri ile güncelledim.

update dbo.AbpOrganizationUnits set Discriminator='MyOrganizationUnit'