Bunlar da hoşunuza gidebilir...

4 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);
    }
    }
    }

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir