NTEXT与在SQL Server CE超过4000个字符中的Windows Phone(NTEXT

2019-06-26 02:21发布

NTEXT与在SQL Server CE超过4000个字符中的Windows Phone

我在了Windows Phone应用程序数据库ntext字段中的一个表,我试图写一些内容到这个领域,但我得到一个InvalidOperationException与消息:

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

我试图使用ntext ,因为我知道, nvarchar不接受超过4000个字符。

我搜索了一个解决方案,但我找不到任何。

唯一的解决办法,我发现我无法在Windows手机上使用,因为它使用SqlConnectionSqlCommandSqlDbType

下面是列的声明方式:

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

我与它插入:

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

有谁知道什么解决办法?

感谢您事先的答案!

Answer 1:

我觉得你在实际的数据库文件列未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();
                }
            }
        }


Answer 2:

NTEXT支持超过500万字,所以你有问题无关,用它做。 见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



文章来源: NTEXT with more than 4000 characters in SQL Server CE in Windows Phone