Discovery¶
Terra.Framework içerisinde datalarla ilgili tüm işlerin yapıldığı katmandır.
Kurulum¶
Terra.Discovery Paketini PackageManager Console’ dan aşağıdaki komutu yazarak indirebilirsiniz:
Install-Package Terra.Discovery -Version 1.0.0-pre-alpha -Source http://10.10.0.237/nuget/Default/
Ve ya Baslarken bölümünde yazılan adımları yaptıysanız NuGet’ten Terra.Discovery bularak indirebilirsiniz.
Kullanımı¶
Startup.cs dosyasında ConfigureServices metodunda Discovery eklememiz gerekmektedir.:
public void ConfigureServices(IServiceCollection services)
{
services.AddDiscovery(new DiscoveryConfiguration
{
DefaultSettings = new DbSettings(),
AuditEnable = true,
AuditUserProvider = new AuditUserProvider(),
EnableEntityLogger = true,
CreateEntityLoggerTable = true
});
// Add framework services.
services.AddMvc();
}
Controller classında kullanımı aşağıdaki gibidir:
using Terra.Discovery.Interfaces;
public class HomeController : Controller
{
private IUnitOfWork _uow;
public HomeController(IUnitOfWork uow)
{
_uow = uow;
}
public IActionResult Index()
{
_uow.Set<MyClass>().Add(new MyClass
{
Name = "Nikola",
Surname = "Tesla"
});
_uow.Save();
var repo = _uow.Repo<MyClass>();
repo.Remove(repo.GetBy().FirstOrDefault());
_uow.Save();
var myList = _uow.Repo<MyClass>().GetBy().ToList();
return View(myList);
}
}
MyClass.cs:
using Terra.Discovery.Types;
public class MyClass : DiscoveryEntity
{
public string Name { get; set; }
public string Surname { get; set; }
public override void Map(ModelBuilder modelBuilder)
{
modelBuilder.Entity<MyClass>(opt =>
{
//opt.ToTable("MyClass"); Veritabanında tablo var ise burada tablonun ismini yazıyoruz.
opt.HasKey(x => x.Id);
opt.HasAlternateKey(x => x.AutoId);
opt.Property(x => x.AutoId).UseSqlServerIdentityColumn();
});
}
}