2013-02-13 53 views
2

我的代碼工作了一個多月,我的應用程序解析RSS源(http://www.whitehouse.gov/feed/blog/white-house),並插入消息到DB:Wp的插入分貝例外

今天我當應用程序試圖添加該消息的」第一異常女士的盒子在2013年的狀態「的分貝。這裏是我的代碼:

News item = Query.instance().AddNews(channel.Guid, channel.Description, channel.Link, channel.PublishDate, channel.Title); 

    public News AddNews(string guid, string description, string link, DateTime publishDate, string title) 
    { 
     // create a new and add it to the context 
     News item = new News { Guid = guid, Description = description, Link = link, PublishDate = publishDate, Title = title }; 
     // add the new to the context 
     db.NewsItems.InsertOnSubmit(item); 
     // save changes to the database 
     db.SubmitChanges(); 

     return item; 
    } 

Imade調試和問題是進入的消息(似乎lenght)的描述,這裏是個例外:

「類型的異常「系統.InvalidOperationException'發生在 Microsoft.Phone.Data.Internal.ni.dll中,並且在 託管/本機邊界之前未處理。 'System.InvalidOperationException'類型的第一次機會例外發生在 System.Data.Linq中。 ni.dll「

,這是列描述爲DB

private string _description; 
    [Column] 
    public string Description 
    { 
     get 
     { 
      return _description; 
     } 
     set 
     { 
      if (_description != value) 
      { 
       NotifyPropertyChanging("Description"); 
       _description = value; 
       // Remove HTML tags. 
       _description = Regex.Replace(_description, "<[^>]+>", string.Empty); 
       // Remove newline characters 
       _description = _description.Replace("\r", "").Replace("\n", ""); 
       // Remove encoded HTML characters 
       _description = HttpUtility.HtmlDecode(_description); 
       //replace spaces 
       _description = _description.Replace(" ", ""); 

       //if (!string.IsNullOrEmpty(_description) && _description.Length > 3900) 
       // _description = _description.Substring(0, 3900); 

       NotifyPropertyChanged("Description"); 
      } 
     } 
    } 

當我去掉這一工作原理:

//if (!string.IsNullOrEmpty(_description) && _description.Length > 3900) 
// _description = _description.Substring(0, 3900); 
+2

看來問題是描述字符串的長度 – 2013-02-13 10:05:59

回答

0

感謝馬里斯暗示我找到了正確的解決方案:

[Column(DbType = "ntext")] 
public string Description 

,而不是

[Column(TypeName = "varchar(MAX)")] 
public string Description 

第二個不適用於windows手機;)

+1

Ohhh,我錯過了你爲'windows phone'。你是對的 – Maris 2013-02-19 15:47:52

1

我們需要異常的身體,幫助你與你的問題。 但我認爲(正如Emiliano Magliocca所說),問題在於您的DB中的描述單元格可以容納較少的字符,然後嘗試插入。您可以修改它將行描述的類型更改爲varchar(max)或Text。無論如何提供身體的excpetion,那麼我們會幫助你。

Asnwer:

你應該列描述的數據類型更改爲VARCHAR(最大),那麼你會覺得自由任意數量的文本保存到此collumn,因爲VARCHAR(最大)最多可容納2GB的文字。當您使用codeFirst的方式來生成表,使用這樣的屬性: [列(類型名=「VARCHAR(MAX)」) 公共字符串描述...

,而不是 [專欄] 公衆字符串描述...

+0

謝謝,你是對的,我忘了添加異常...我增加了更多的細節。 ..如果你可以看一下;) – 2013-02-13 10:30:44

+1

你在'描述'中使用哪種類型的表格?您應該將其更改爲Varchar(max),然後您可以隨意將任意數量的文本保存到該列表中,因爲varchar(max)最多可以容納2GB的文本。當您使用codeFirst方法來生成表格時,請使用如下屬性: [Column(TypeName =「varchar(MAX)」)] public string描述... – Maris 2013-02-13 10:41:51