2012-06-13 68 views
0

我有一個非常小的對象圖,我使用:如何使用Entity Framework Code First 4.1映射小對象圖?

public struct Address 
{ 
    public string AddressLine1 { get; set; } 
    public string AddressLine2 { get; set; } 
    etc... 
} 

public class User 
{ 
    public Address HomeAddress { get; set; } 
    public Address WorkAddress { get; set; } 
    public string FirstName { get; set; } 
    etc... 
} 

使用實體框架4.1,我怎麼會變成這樣的結構映射到一個表,以便他們映射成列,如:

HomeAddressLine1 
HomeAddressLine2 
WorkAddressLine1 
WorkAddressLine2 
FirstName 
LastName 
etc... 
+1

使'struct'成爲'class'並嘗試將其映射爲複雜類型。如果嘗試後出現問題,請在此處發帖。 – Eranga

回答

1

EF不支持結構。您必須爲您的地址使用類並將其映射爲複雜類型:

public class Address 
{ 
    public string AddressLine1 { get; set; } 
    public string AddressLine2 { get; set; } 
} 

public class User 
{ 
    public int Id { get; set; } 
    public Address HomeAddress { get; set; } 
    public Address WorkAddress { get; set; } 
    public string FirstName { get; set; } 
} 


public class Context : DbContext 
{ 
    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<User>() 
        .Property(u => u.HomeAddress.AddressLine1) 
        .ColumnName("HomeAddressLine1"); 
     // Use the same pattern for all columns of HomeAddress and WorkAddress 
    } 
} 
+0

...加'modelBuilder.ComplexType

();',對吧?或者,由於'Property(...)'中的虛線路徑,EF會自動將'Address'識別爲複雜類型? – Slauma

+0

我期望它能夠識別它,因爲'Address'沒有鍵,它被用在'Property'映射中,但是如果它沒有,你的假設將會修復它。 –

+0

它甚至沒有任何映射,只是測試它的工作。 「地址」中缺少的鍵似乎足以使其成爲一種複雜的類型。 – Slauma

相關問題