2011-08-16 15 views
7

Şu anda Entity Framework 4'ü Haziran 2011 CTP (enum desteği için) ile kullanıyorum ve kalıcı bir sınıfa yapı eklemeyi zorlaştırıyorum. Ben (diğerleri arasında) bir InclusionCriteria yapı alanına sahip bir Patient sınıf var:Bir yapının alanlarını içeren sınıfla aynı tabloda depolamak mümkün mü?

public class Patient 
{ 
    public InclusionCriteria inclusionCriteria 
    { 
     get; 
     set; 
    } 

    ... 
} 

yapı ilkel alanları ile oldukça basittir: bu ortaya çıktı

public struct InclusionCriteria 
{ 
    public bool withStemi 
    { 
     get; 
     set; 
    } 

    ... 
} 

sistemini çalıştırdıktan sonra o yapı en veriler kaydedilmedi. Oluşturulan tabloyu görüntülediğimde, yapı orada değil (yabancı anahtar veya başka bir şekilde). Yapının alanlarının Patient tablosunda yer almasını isterim, bu yüzden kriterler için bir DbSet yapmadım. Bunu yapabilirim, ama hepsini aynı masada tutmayı tercih ederim. Bu varlık çerçevesinde mümkün mü?

cevap

7

Yapılar desteklenmez. Sınıfı kullanmalı ve karmaşık tip olarak haritalamalısınız. Eğer kod ilk yaklaşım kullanıyorsanız, sınıf yapmak ve veritabanı yeniden oluşturmak için deneyebilirsiniz - eğer şanslıysanız otomatik olarak karmaşık tip olarak haritalanacak. Aksi takdirde veri ek açıklama kullanabilirsiniz:

[ComplexType] 
public class InclusionCriteria { ... } 

veya akıcı API:

modelBuilder.ComplexType<InclusionCriteria>(); 

karmaşık türünü oluşturmak için EDMX this article izleyin kullanıyor ve this article kullanmak durumunda.

B

Btw. CTP 2011, yalnızca gerçek geliştirme için değil, yeni özellikleri test etmek içindir. İçeriği bir sonraki CTP’de değişebilir.

+0

Teşekkür ederiz! Görünüşe göre aradığım anahtar kelime karmaşık tipti. Hiçbir zaman 'null' olmadığından emin olmak için bir strcut kullanıyordum, ama sanırım bunun yerine normal yöntemleri kullanacağım. – 101100

İlgili konular