Bunlar da hoşunuza gidebilir...

7 Cevaplar

  1. ASLAN dedi ki:

    Hocam merhaba,
    Ben bir konu hakkında bilginiz var ise başvurmak istiyorum. İki tablom olduğunu düşünün biri user biri user detay diye, user tablosuna yeni bir kayıt eklendiğinde userdetay tablosuna o userid ile otomatik kayıt nasıl eklerim. Bunu context nesenesinde nasıl yaparım yada yapabilirmiyim bilemedim. Neyi aramam gerekiyor onuda bilmiyorum :) konu hakkında bir bilginiz mevcut ise bilgilendirmenizi rica ederim.

    • Kamran dedi ki:

      ilk once
      context.User.Add(newUser)
      daha sonra gelen userdetay bilgilerini
      userId=newUser.ID
      olarak goster daha sonra
      context.savechanges()

    • Merhaba , User ve Userdetail bir ilişki içerisinde ise ve master tablo user ise , userın içerisinde userdetail tanımlanır ve doldurulur , daha sonra user ı kaydettiğinizde hali hazırda userdetail de kaydolmuş olur. Aralarında bir ilişki yoksa ve kurulması doğru seçenek olacaktır.
      Örneğin

      public class User : BaseEntity
      {
      public string UserName { get; set; }
      public string Name { get; set; }
      public string SurName { get; set; }
      public string Email { get; set; }
      public virtual UserDetail UserDetail { get; set; }
      }

      public UserDetail User : BaseEntity
      {
      public long UserId { get; set; }
      public string MobilePhone { get; set; }
      }

      user usr = new user();
      // User doldur

      userdetail usrdtl = new userdetail();
      // detay doldur.

      usr.Userdetail =usrdtl;

      save.changes();

      şeklinde yapılabilir.

      Diyelim ki ilişkisi yok ve otomatik bir kayıt atılacak sadece , Bora hocamım save.change metodunu ezdiği gibi entityleri gezip eğer entity user ise orada yakalayıp kayıttan sonra detail için sizde bir kayıt atabilirsiniz.

  2. talat dedi ki:

    Global Filter için benim başka bir önerim var.

    Aşağıdaki kod bloğu Entity’deki IsDeleted property’sine göre işlem yapıyor. Böylece eğer boolean tipinde IsDeleted property’si varsa, global query filter’a ekliyor.

    private void SetEFGlobalQueryFilters(ModelBuilder modelBuilder)
    {
    foreach (var entityType in modelBuilder.Model.GetEntityTypes())
    {
    var isDeletedProperty = entityType.FindProperty(nameof(BaseTable.IsDeleted));
    if (isDeletedProperty != null && isDeletedProperty.ClrType == typeof(bool))
    {
    var parameter = Expression.Parameter(entityType.ClrType, “p”);
    var _memberExpression = Expression.Property(parameter, isDeletedProperty.PropertyInfo);
    var _matchExpression = Expression.Equal(_memberExpression, Expression.Constant(false));

    var filter = Expression.Lambda(_matchExpression, parameter);

    MutableEntityTypeExtensions.SetQueryFilter(entityType, filter);
    }
    }
    }

  3. Hakan dedi ki:

    Bora hocam eline, emeğine sağlık. Sayende çok şeyler öğrendim. Aklıma takılan ve bir türlü doğru cevabı bulamadığım bir sorum var. (Belki de ben doğru araştıramadım.)

    Database modelleri tanımlarken public virtual kullanımını neye göre yapıyoruz? Yani public virtual Employee ile public Employee tanımlamaları arasındaki fark nedir? Benim mantığım, iki modelden de birbirlerine gitmek istiyorsak, yani Employee üzerinden Order’lara, Order üzerinden Employee’lere o zaman virtual tanımlamamız gerekiyor. Sadece employee üzerinden orderlara ulaşmak yetiyorsa o zaman public Order Siparisler {get;set;} işimizi görüyor diye düşünüyorum. Doğru mudur acaba? Bir de bunları virtual ya da sadece model olarak tanımlamanın performans üzerinde etkisi var mıdır?

    Çok teşekkürler

  4. Hamit dedi ki:

    Hocam bir sorum olacak. Bir veri tabanında farklı dönemlerde kullanılmak ama aynı yapıda tablolarım var. Örneğin; 01_item, 02_item, 03_item bu tabloların her biri için entity class açamayacağıma göre çalışmak istediğim tabloyu nasıl seçebilirim. 3 gün boyunca saçımı yoluyorum…

    • borsoft dedi ki:

      Selamlar,
      Dinamik table .Net Core Entity’de ancak dynamic query ile olabilir. Yani text SqlQuery yazıp from kısmını dinamik table ismi yapıcan. Ya da dapper’a geçicen…

      İyi çalışmalar.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.