2012-02-26 8 views
6

Benim varlık sınıflarımdan biri sql server veritabanında BIGINT olarak saklanabilir. Sorum şu: Varlık sınıfımın örneklerini nasıl depolayacağımı ve nasıl alacağımı öğrenmek için Varlık Çerçevesi bağlamını nasıl edinebilirim?Öğe çerçevesine nasıl özel bir türün (skaler olarak depolanabilir) örneklerinin kaydedileceği anlatılır

Daha fazla ayrıntı. Ben Noda Time kullanıyorum, hangi SQL veya .NET datetime (VE tatlı bir tepesi) daha (0) geniş bir aralıkta tarihleri ​​temsil edebilir. Varlık Sınıfım, Happening, NodaTime'nin Instant sınıfı etrafında bir sarıcıdır. Uzun zamandır bir Mutluluk ayarlayabilir ve 'dan uzun bir süre .SetFromLong (uzun anlık) ve .ToLong() gibi yöntemlerle uzun sürebilirim.

Şu anda modelimin çalışması, nokta net DateTime türünün özelliklerini içeren sınıfları kaydetmem var. Bunun yerine, özel türüm "Happening" in özelliklerini kullanmak istiyorsam, Entity Framework'e bunları nasıl kaydedeceğimi nasıl anlarım?

Modelleme ve Eşleme ile ilgili bu makaleyi okuyorsam doğru yolda mıyım yoksa daha basit bir şey mi eksik?

http://msdn.microsoft.com/en-us/library/bb896343.aspx

ben varlık framework 4.

+0

Yinelenen NodaTime aracılığıyla sınıfı erişebilirsiniz: http://stackoverflow.com/questions/5820915/varlık-çerçeve-özel-veri tipi eşleme –

cevap

6

kullanıyorum ne senin varlık bir NodaTime ve uzun üzerinde 2 özelliklerini ekliyor yapıyor, ve EF [NotMapped] kullanarak NodaTime özelliği hariç tavsiye model, daha sonra alıcı/ayarlayıcıda uzun güncelleme.

public class MyEntity{ 
    public long TimeAsLong{get;set;} 
    [NotMapped] 
    public Happening { 
     get{ 
     return new Happening().SetFromLong(TimeAsLong); 
     } 
     set { 
     TimeAsLong = value.ToLong(); 
     } 
    } 
} 

yani Bunun etkisi uzun db depolandığını olacak ama

+1

Bu çalıştı, teşekkür ederim. EF'i kabul etmeden TimeAsLong'a ihtiyacım yok, bu çok fazla geliyor ve (deneyimlerinize göre) bu üyeleri kendine özgü bir şekilde adlandırmaya çalışıyorsunuz, TimeAsLongForEF, bunun gibi bir şey var mı? –

+0

Sunum ve sunumla ilgili her şey, bazen bir şeyi nasıl kullanmak istediğinizden farklı bir şekilde depolamak için daha iyi/daha verimli, bu bir örnektir. Aslında bunu yapmak istediğim yerde bulduğum yer yığınları yok, ancak olayda gerçekleşiyor, başka bir örnekte, veritabanında tek bir Char'ı saklamak, yazma modelinizdeki bir dizgiye dönüştürmeyi gerektirir (EF, varchar [1] ve varchar [2] her ikisi de dizedir. Şahsen ben alanı EF olarak etiketlemem ama bu sadece bir tercih şey. –

+0

Ayrıca, propery'nin kamuya açık olup olmadığına dair EF'in gerçekten umrunda olmadığını da unutmayın (eğer Kod İlkini kullanıyorsanız). Yine de, özel olsa bile, haritayı bulmanın bir yoluna ihtiyacınız var. Ne yaptık, EF sınıfını sınıf sınıfına koyduk, böylece özel alanlara da erişebiliyor ve haritalamayı gerçekleştirebiliyoruz. Bunun dezavantajı, sizin varlığınızda bir probleminiz olabileceği veya olmayabilecek bir eşleme sınıfına sahip olmanızdır. –

İlgili konular