folder Tahribat.com Forumları
linefolder C#, Asp.Net, .Net Core
linefolder Entity Framework Codefirst İle Datetime Setleme



Entity Framework Codefirst İle Datetime Setleme

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Mastika.
    Absolut
    Absolut's avatar
    Kayıt Tarihi: 04/Ağustos/2011
    Erkek

    Selam arkadaşlar CodeFirst ile oluşturmaya çalıştıgım bir centity im var.  Aşagıdaki şekilde ben burada örneğin Kayıt oluşturulurken otomatik olarak Oluşturulma ve Modified alanlarının setlenmesini istiyorum.

    Kayıt oluşturulurken createdOn setliycek ve kaydı her güncelleme yaptıgımda ModifiedOn u güncelliycek şekilde yapmam mümkünmü CodeFirst ile ?

     

     public class Customer
        {
            public Customer()
            {
                SMSs = new List<SMS>();
                Permissions = new List<Permission>();
            }
    
            [Key]
            [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
            public Guid CustomerId { get; set; }
            [Required]
            [MaxLength(100)]
            public String Name { get; set; }
            [MaxLength(100)]
            public String MiddleName { get; set; }
            [Required]
            [MaxLength(100)]
            public String LastName { get; set; }
            [Required]
            [MaxLength(20)]
            public string MobilePhone { get; set; }
            [MaxLength(20)]
            public string Email { get; set; }
            public DateTime? BirthDay { get; set; }
            [Required]
    
            public DateTime? CreatedOn { get; set; }
            [Required]
            
            public DateTime? ModifiedOn { get; set; }
            public ICollection<SMS> SMSs { get; set; }
            public ICollection<Permission> Permissions { get; set; }
        }

     


    Nice babayigitler kirayi kim odeyecek, coluk cocuk ne yiyecek derdinden dolayi dunyayi degistiremiyor.
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    saybirs
    saybirs's avatar
    Kayıt Tarihi: 24/Temmuz/2009
    Erkek

    tam olarak ne yapmak istediğini anlamamakla beraber alttaki link çözüm olabilir. Ayrıntılı olarak anlatırsan yardımcı olabilirim.

    http://benjii.me/2014/03/track-created-and-modified-fields-automatically-with-entity-framework-code-first/ 

     

    saybirs tarafından 14/Mar/17 09:46 tarihinde düzenlenmiştir
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    camarade
    ontedi
    ontedi's avatar
    Kayıt Tarihi: 04/Eylül/2005
    Erkek

    Hocam db taraflı olarak trigger ile halletsen olmaz mı?

    Yada,

     

    createdOn DATETIME NULL DEFAULT (getdate())

     

    olarak belirlesen.


    Matematikçi ve Yazılımcı. http://www.ontedi.com ve http://www.cizgi.site Siteme beklerim herkesi.
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Mastika.
    Absolut
    Absolut's avatar
    Kayıt Tarihi: 04/Ağustos/2011
    Erkek

    Hocam şimdi bir kullanıcı oluştururken ben datetime ve modifedon alanlarını hiç göndermeden otomatik olarak db ye setlenmesini istiyorum. Trigger olayı mantıklı Codefirst ile db oluştururken triggerı da oluşturma ve tetikleme olayı var mıdır ?

    Verilen linki inceliyorum birazdan olay hakkında pek fikrim olmadıgından netde baktıklarımı uygulamada sıkıntı çektim.


    Nice babayigitler kirayi kim odeyecek, coluk cocuk ne yiyecek derdinden dolayi dunyayi degistiremiyor.
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    Hocam default değer iş Görmüyor mu? 


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    override
    override's avatar
    Kayıt Tarihi: 15/Aralık/2009
    Erkek

    Selam,

    Entity Id 0 eşitmi kontrolü yazıp 0 ise create değilse edit tarihlerini yazabilirsin


    g͇̫͛͆̾ͫ̑͆l͖͉̗̩̳̟̍ͫͥͨ
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    saybirs
    saybirs's avatar
    Kayıt Tarihi: 24/Temmuz/2009
    Erkek
    Absolut bunu yazdı

    Hocam şimdi bir kullanıcı oluştururken ben datetime ve modifedon alanlarını hiç göndermeden otomatik olarak db ye setlenmesini istiyorum. Trigger olayı mantıklı Codefirst ile db oluştururken triggerı da oluşturma ve tetikleme olayı var mıdır ?

    Verilen linki inceliyorum birazdan olay hakkında pek fikrim olmadıgından netde baktıklarımı uygulamada sıkıntı çektim.

    hocam üstte attığım linkte, trigger kullanmadan, EF'nin saveChanges() metodunu override ederek araya kendi yazmış olduğu metotu eklemiş

     public override int SaveChanges()
        {
            AddTimestamps();
            return base.SaveChanges();
        }

     

    Eğer trigger kullanıp, bunu da EF içinde yazıcam dersen;

    https://github.com/NickStrupat/EntityFramework.Triggers bakmanı tavsiye ederim.

    Longer example(targeting EF6 for now) başlığı altında basit bir örnekte yapmış.

     

    Projenin boyutuna göre, ileriyi düşünerek bi yol seçmelisin;

    1.Yöntem İleride her defasında sql tarafında trigger yazmak yerine EF'de tutarsın.

    2.Yöntem EF'nin saveChanges() virtualını override edersin. Bunuda bir class'a çekersin. ModifiedOn vs işlemlerin de yeni açtığın class'tan inherit alırsın.

    3.Yöntem trigger yazıcaksın

    4.Yöntem Customer() constructor'ı içerisine 

     public Customer()
            {
                   LastName = "Tahribat";
                   CreatedDate = DateTime.Now;
            }

    yazıp default value'larını basıcaksın.

     

    Bir kaç yöntem var çözüm senin :)

     

    Takıldığın bir yer olursa özelden yaz, yardımcı olurum

    saybirs tarafından 14/Mar/17 12:37 tarihinde düzenlenmiştir
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Mastika.
    Absolut
    Absolut's avatar
    Kayıt Tarihi: 04/Ağustos/2011
    Erkek
    saybirs bunu yazdı
    Absolut bunu yazdı

    Hocam şimdi bir kullanıcı oluştururken ben datetime ve modifedon alanlarını hiç göndermeden otomatik olarak db ye setlenmesini istiyorum. Trigger olayı mantıklı Codefirst ile db oluştururken triggerı da oluşturma ve tetikleme olayı var mıdır ?

    Verilen linki inceliyorum birazdan olay hakkında pek fikrim olmadıgından netde baktıklarımı uygulamada sıkıntı çektim.

    hocam üstte attığım linkte, trigger kullanmadan, EF'nin saveChanges() metodunu override ederek araya kendi yazmış olduğu metotu eklemiş

     public override int SaveChanges()
        {
            AddTimestamps();
            return base.SaveChanges();
        }

     

    Eğer trigger kullanıp, bunu da EF içinde yazıcam dersen;

    https://github.com/NickStrupat/EntityFramework.Triggers bakmanı tavsiye ederim.

    Longer example(targeting EF6 for now) başlığı altında basit bir örnekte yapmış.

     

    Projenin boyutuna göre, ileriyi düşünerek bi yol seçmelisin;

    1.Yöntem İleride her defasında sql tarafında trigger yazmak yerine EF'de tutarsın.

    2.Yöntem EF'nin saveChanges() virtualını override edersin. Bunuda bir class'a çekersin. ModifiedOn vs işlemlerin de yeni açtığın class'tan inherit alırsın.

    3.Yöntem trigger yazıcaksın

    4.Yöntem Customer() constructor'ı içerisine 

     
     public override int SaveChanges()
        {
            AddTimestamps();
            return base.SaveChanges();
        }


    yazıp default value'larını basıcaksın.

     

    Bir kaç yöntem var çözüm senin :)

     

    Takıldığın bir yer olursa özelden yaz, yardımcı olurum

     

     

     

     

     

    Hocam açıklama için teşekkürler. Şuanda benim için sanki en kullanışlı yol 2. olan gibi.  Attıgınız linkde anlatım gayet net ve güzel.

    Müsait bir zamanımda deneme yapacagım takıldıgım nokta olursa yazarım çok teşekkürler.


    Nice babayigitler kirayi kim odeyecek, coluk cocuk ne yiyecek derdinden dolayi dunyayi degistiremiyor.
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Mastika.
    Absolut
    Absolut's avatar
    Kayıt Tarihi: 04/Ağustos/2011
    Erkek

    @saybirs hocam SaveChanges() i context de override ederek olayı çözdüm. Şuanda modified olayınıda güzel bir şekilde basıyor.

    Herkeze yardımları için teşekkür ederim.


    Nice babayigitler kirayi kim odeyecek, coluk cocuk ne yiyecek derdinden dolayi dunyayi degistiremiyor.
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Diathorus
    Diathorus's avatar
    Kayıt Tarihi: 19/Mayıs/2014
    Erkek

    Selam dostum,

    Şimdi anladığım kadarıyla tablona yeni kayıt girildiğinde otomatik olarak CreatedOn alanına kayıdın oluşturulma tarihi yazılsın istiyorsun. Kayıt güncellendiğinde ise ModifiedOn alanı güncellensin istiyorsun.

    1. Yeni kayıt oluşturulduğunda CreatedOn alanına değer atanması için sınıfını aşağıdaki gibi düzenle. Sonra Sql Server' da default value kısmına getdate() yaz.

    [DatabaseGenerated(DatabaseGeneratedOption.Computed)]
    public DateTime CreatedOn { get; set; }

     

    2. Kayıt güncellendiğinde ModifiedOn alanına otomatik değer atanması içinse ya C# tarafında güncelleme işlemi yapıldığında sen değer ataması yapacaksın yada sql server tarafında trigger yazacaksın.

    https://www.aspsnippets.com/Articles/Simple-Insert-Update-and-Delete-Triggers-in-SQL-Server-with-example.aspx

    Örnek işini görür sanırım.

     

  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Mastika.
    Absolut
    Absolut's avatar
    Kayıt Tarihi: 04/Ağustos/2011
    Erkek
    Diathorus bunu yazdı

    Selam dostum,

    Şimdi anladığım kadarıyla tablona yeni kayıt girildiğinde otomatik olarak CreatedOn alanına kayıdın oluşturulma tarihi yazılsın istiyorsun. Kayıt güncellendiğinde ise ModifiedOn alanı güncellensin istiyorsun.

    1. Yeni kayıt oluşturulduğunda CreatedOn alanına değer atanması için sınıfını aşağıdaki gibi düzenle. Sonra Sql Server' da default value kısmına getdate() yaz.

    [DatabaseGenerated(DatabaseGeneratedOption.Computed)]
    public DateTime CreatedOn { get; set; }

     

    2. Kayıt güncellendiğinde ModifiedOn alanına otomatik değer atanması içinse ya C# tarafında güncelleme işlemi yapıldığında sen değer ataması yapacaksın yada sql server tarafında trigger yazacaksın.

    https://www.aspsnippets.com/Articles/Simple-Insert-Update-and-Delete-Triggers-in-SQL-Server-with-example.aspx

    Örnek işini görür sanırım.

     

    Hocam CodeFirst yaparken db kısmına gidipte bir alana deger girmek bana pek mantıklı gelmiyor. Zaten db de herhangi bir işlem yapmamak adına ben CodeFirst yapıyorum. 

    savechanges ovveride ile created olayını çözdüm. Update içinde dediğin gibi BLL de save e göndermeden önce değişikligi yapıyorum. 

     

    Absolut tarafından 14/Mar/17 16:37 tarihinde düzenlenmiştir

    Nice babayigitler kirayi kim odeyecek, coluk cocuk ne yiyecek derdinden dolayi dunyayi degistiremiyor.
Toplam Hit: 1091 Toplam Mesaj: 11
ef codefirst