2011-08-02 112 views
1

我有一個類實體框架代碼第一次鑄造列

public class Foo 
{ 
    public int UserId { get; set; } 
} 

,我正在使用的代碼第一流利映射到這個映射到數據庫。

Property(i => i.UserId) 
      .HasColumnName("userno"); 

唯一的問題是userno實際上是數據庫中的char(10)。我該如何着手鑄造或轉換這種類型?因爲我目前得到這個錯誤。

「Foo」上的'UserId'屬性無法設置爲'String'值。 您必須將此屬性設置爲「Int32」類型的非空值。

感謝

回答

3

實體框架不具有映射類型轉換的任何支持,以便在您的方案是唯一有效的對應的屬性是:

public class Foo 
{ 
    public string UserId { get; set; } 
} 

如果你想int財產,以及你必須做的:

public class Foo 
{ 
    public string UserId { get; set; } 

    public int UserIntId 
    { 
     get { return Int32.Parse(UserId); } 
     set { UserId = value.ToString(); } 
    } 
} 

並將此添加到您的映射:

Ignore(i => i.UserIntId); 

您可以使用UserId屬性的輔助功能,但請注意,輔助功能也會影響您的映射實際看到該屬性。如果沒有,則根本不會映射UserId

+0

想到這可能是這樣的情況:( –