Entity Framework Code First Mantığı ile ilişkili tablo profesyonel bir şekilde nasıl oluşturulur?

Merhaba,
EF code first mantığı ile 2 farklı tablo oluşturdum.
1.Tablo(User)'nun property’leri


 public class User:IEntity
    {
        [DatabaseGenerated(DatabaseGeneratedOption.Identity), Key]
        [Required]
        public int UserID { get; set; }
        public string Name { get; set; }
        public string SurName { get; set; }
        public string Nick { get; set; }
        public string Phone { get; set; }
        public string Bio { get; set; }
        public string Mail { get; set; }
        public string Password { get; set; }
        public bool IsDeleted { get; set; }
        public DateTime DateTime { get; set; }
         
    }

2.Tablo’nun (Tweet) propertyleri;


 public class Tweet : IEntity
    {

        [DatabaseGenerated(DatabaseGeneratedOption.Identity), Key]
        [Required]
        public int TweetID { get; set; }
        public string Content { get; set; }
        public int LikeCount { get; set; }
        public DateTime DateTime { get; set; }
        public bool IsDeleted { get; set; }

        public int UserID { get; set; }

        public User User { get; set; }
       
    }


bu şekilde migration oluşturuyorum. İlişkiler kuruluyor. Repository kısmında get yapıp verileri alacağım zaman


public Tweet Get(int id)
        {
           return this._twitterContext.Tweets.Include(x => x.User).Where(x => x.TweetID == id).FirstOrDefault();
            //return this._twitterContext.Tweets.Where(x => x.TweetID == id).FirstOrDefault();
        }


Include yapmadan user gözükmüyor. Örnek olarak açıklama satırında olan kodu çağırdığımda user = null olarak gözüküyor. Tabloda UserID yi girdiğim zaman direkt User tablosu ile zaten ilişki kuruyor. Ben bir daha neden INCLUDE Yapıyorum?
bu çok profesyonelce bir yaklaşım değil gibi gözüküyor. başka bir şekilde yapmamın yolu var mı?
İnşallah anlatabilmişimdir.
Teşekkürler…

Cunku ikisi ayri tablo ve aradaki iliski [muhtemelen] foreign key iliskisi. Eger butun iliskiler otomatik yuklenirse en ufak query’lerin database’in yarisini dondurme, 1500 query’e veya recursive’e donusme ihtimali var. Default olarak istenecek bir durum degil. (Yine de belki opsiyonu vardir; EF bilmiyorum.)

Tam tersi; yardimci ama potansiyel pahali isleri default olarak yapmak amatorlere hitap eden sistemlerin bir huyu. Profosyonel programcilarin ne istediklerini tek tek, tane tane belirtebilmeleri ve bu cok is oldugu noktada bile buna usenmemeleri veya otomatize edebilmeleri bekleniyor.

Lazy loading’e baktin mi?

1 Beğeni

Çok teşekkür ederim Lazy işimi gördü.
Şuan post yapamıyorum onuda araştıracağım