2012-07-06 43 views
2

NTEXT與SQL Server CE的超過4000個字符中的Windows PhoneNTEXT與SQL Server CE的超過4000個字符中的Windows Phone

我有一個ntext場我的Windows Phone應用程序數據庫中的一個表,我試圖寫一些內容到這個領域,但我得到了InvalidOperationException與消息:

字符串截斷:最大= 4000,LEN = 4621

我想使用b因爲我知道nvarchar不接受超過4000個字符。

我已經搜索了一個解決方案,但我找不到任何。

我發現的唯一解決方案是我無法在windows phone上使用,因爲它使用SqlConnectionSqlCommandSqlDbType

這裏是列的聲明方式:

cn.Articles.InsertAllOnSubmit(articlesToSave); 
cn.SubmitChanges(); 

有誰知道任何解決方法:

private string _content; 
    [Column(DbType="ntext")] 
    public string Content 
    { 
     get 
     { 
      return _content; 
     } 
     set 
     { 
      if (value != _content) 
      { 
       _content = value; 
       NotifyChange(o => o.Content); 
      } 
     } 
    } 

我與插入呢?

感謝您提前給出答案!

+1

是否CE不支持'爲nvarchar(最大)'?如果它確實比'ntext'好得多。 – 2012-07-06 15:29:18

+0

不,它不支持它,至少不是在windows phone中,它只接受nvarchar(4000)作爲最大長度。 – 2012-07-06 15:32:51

+1

然後我懷疑它也會在4000字節處截斷ntext。 – 2012-07-06 15:39:45

回答

3

我覺得你的列在實際的數據庫文件中不是ntext,無論出於何種原因。

這對我工作得很好:

using (NorthwindContext ctx = new NorthwindContext(NorthwindContext.ConnectionString)) 
    { 
     ctx.DeleteDatabase(); 
     ctx.CreateDatabase(); 
     var category = new Categories(); 
     category.CategoryName = "Test"; 
     category.Description = new string('x', 6666); 
     ctx.Categories.InsertOnSubmit(category); 
     ctx.SubmitChanges(); 

     var testCat = ctx.Categories.First(); 
     if (testCat.Description.Length == 6666) 
     { 
      MessageBox.Show("Works on my Windows Phone");     
     } 
    } 

列聲明:

[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Description", DbType="NText", UpdateCheck=UpdateCheck.Never)] 
     public string Description 
     { 
      get 
      { 
       return this._Description; 
      } 
      set 
      { 
       if ((this._Description != value)) 
       { 
        this.OnDescriptionChanging(value); 
        this.SendPropertyChanging(); 
        this._Description = value; 
        this.SendPropertyChanged("Description"); 
        this.OnDescriptionChanged(); 
       } 
      } 
     } 
2

ntext支持超過5億個字符,因此您遇到的問題與它無關。見http://msdn.microsoft.com/en-us/library/ms172424.aspx

你可能想看看下面的:http://msdn.microsoft.com/en-us/library/hh202872(v=vs.92).aspx

列表不NTEXT提,但它確實提到文本。我猜測你可能需要提供你自己的自定義格式器。

更新

請看下面的修補程序。它涵蓋了使用linq,ce和ntext數據類型時的某些情況。看起來像沒有的修復,格式化程序迫使ntext成爲nvarchar(4000)。 http://support.microsoft.com/kb/958478

+0

當我晚上回到家時,我會再看一眼,看看我是否做錯了,可能是這樣。 – 2012-07-06 16:23:46

+0

但是,您的所有信息不適用於Windows Phone ... – ErikEJ 2012-07-06 18:11:58

+0

是的,我不認爲這個修補程序將與嵌入在windows phone sdk中的sqlce一起使用。 – 2012-07-06 18:22:05

相關問題