Giriş
Kendi context sınıfımızı şöyle yazarız.
Database Alanı
Database Sınıfı yazısına taşıdım.
Şöyle yaparız.
Elimizde Owner tablosu olsun.
Kendi context sınıfımızı şöyle yazarız.
namespace MySolution.MyApplication.Contexts
{
public class MyContext : DbContext
{
[…]
}
}
Ayarlar için şöyle bir connectionString eklenir.<add
name="MySolution.MyApplication.Contexts.MyContext"
connectionString="..."
providerName="System.Data.SqlClient" />
Configuration Alanı
Configuration Sınıfı yazısına taşıdım.
Database Sınıfı yazısına taşıdım.
First metodu
Belirtilen kritere uyan ilk kaydı döndürür. Event isimli bir sınıfımız olsun. Bu sınıfın Title alanı "title" olan ilk nesneyi şöyle alırız.
Kısaca değişiklikleri veritabanına kaydeder.
Şöyle yaparız.
Set metoduBelirtilen kritere uyan ilk kaydı döndürür. Event isimli bir sınıfımız olsun. Bu sınıfın Title alanı "title" olan ilk nesneyi şöyle alırız.
context.Events.First(ev => ev.Title == "title").Include(ev => ev.User);
Include metodu
OneToMany ilişkilerde Many listesini doldurur.
Örnek
Event isimli bir sınıfımız ve bu sınıfın User isimli bir listesi olsun.
Eğer OneToMany listesini filtrelemek isteseydik şöyle yapardık. Örnekte ExampleEntity1 sınıfının TextEntry alanı var. Bu alanın da LocalizContenst listesi var.
Açıklaması şöyle.OneToMany ilişkilerde Many listesini doldurur.
Örnek
Event isimli bir sınıfımız ve bu sınıfın User isimli bir listesi olsun.
public class Event
{
[ForeignKey("UserID")]
public virtual User User { get; set; }
}
Event'i bulurken User listesini şöyle doldururuz.context.Events.First(ev => ev.Title == "title").Include(ev => ev.User);
ÖrnekEğer OneToMany listesini filtrelemek isteseydik şöyle yapardık. Örnekte ExampleEntity1 sınıfının TextEntry alanı var. Bu alanın da LocalizContenst listesi var.
var result = dc.ExampleEntity1.Include(ee =>ee.TextEntry.LocalizedContents)
.Select(x=>new
{
//Try anonymous or a projection to your model.
//only retrieve filtered data.
exampleEntity = x,
localizedContetnt = x.TextEntry.LocalizedContents.Where(g=>g.Id==YourKey),
}).FirstOrDefault();
SaveChanges metoduSaveChanges does different things for entities in different states:
- Unchanged entities are not touched by SaveChanges. Updates are not sent to the database for entities in the Unchanged state.
- Added entities are inserted into the database and then become Unchanged when SaveChanges returns.
- Modified entities are updated in the database and then become Unchanged when SaveChanges returns.
- Deleted entities are deleted from the database and are then detached from the context.
context.SaveChanges();
SaveChangesAsync metoduŞöyle yaparız.
await context.SaveChangesAsync();
Şöyle yaparız.
var userId = .... // Obtained elsewhere
using (var context = new DbContext())
{
var user =
context.Set<User>()
.Include(u => u.Person.Employee)
.Where(u => u.Id == userId)
.ToList()
.FirstOrDefault();
}
Where metodu
Elimizde Owner tablosu olsun.
OwnerID OwnerName
1 John
2 Marie
3 Alex
Elimde Pet tablosu olsun.PetID PetTag Status OwnerID
1 A341 Active 1
2 A342 Inactive 1
3 A343 Active 2
4 A345 Active 2
Sahibi olan ve statüsü Inactive olmayanları seçmek için şu sql!i kullanırız.select o.*
from dbo.owner o
where not exists(
select *
from dbo.pet p
where p.ownerid=o.ownerid and
p.status='Inactive'
);
Şöyle yaparız.owners = context.Owners
.Where(o => !o.Pets.Any(p => p.Status == "Inactive"))
.ToList();
Hiç yorum yok:
Yorum Gönder