2011-10-06 110 views
0

我有一個實體RequiredAttribute標籤上的私人領域

public class Avatar 
{ 
     [Key] 
     public int Id { get; set; } 
     [Required] 
     private string _linkInString { get; set; } 

     [NotMapped] 
     public Uri Link 
     { 
      get { return new Uri(_linkInString); } 
      set { _linkInString = value.AbsoluteUri; } 
     } 

} 

具有private field (_linkInString)因爲URI不能在數據庫中保存爲開放的,只能作爲字符串。

第一次運行時,我的數據庫正在創建我只有Id列的gettable Avatar。

有關如何解決此問題的任何想法?

編輯 我剛剛發現: - 帶下劃線的名稱作爲第一個字母被遺棄。 - 使用內部給出相同的結果。

回答

1

EF中有一個非常大的代碼映射限制。它遵循可訪問性規則。所以私人領域是你的課程的私人領域,它沒有被映射,因爲上下文沒有看到它。

如果你想使用EF這種方式放棄代碼第一/流利的映射和使用EDMX其中this is possible

2

創建一個公共映射字符串字段,該字段返回要保存爲URI的字符串表示形式的內容。由於你的公共URI沒有被映射,當然你所描述的全部工作。

編輯:

請更改此:

[Required] 
private string _linkInString { get; set; } 

進入這個:

[Required] 
public string _linkInString { get; set; } 

它是怎樣現在保存?

+0

你能告訴我一些例子嗎?因爲我英語不好,我不瞭解你。 – user278618

+0

是的,當然。所以,我實際上已經明白了你的答案,但我很難理解我不能使用私人領域 – user278618