2

WindowsPhoneのSQLServerCEで4000文字を超えるNTEXT

Windows Phoneアプリにntext、テーブルの1つにフィールドがあるデータベースがあり、このフィールドにコンテンツを書き込もうとしてInvalidOperationExceptionいますが、次のメッセージが表示されます。

文字列の切り捨て:max = 4000、len = 4621

私はそれが4000文字以上を受け入れないntextことを知っているので使用しようとしています。nvarchar

解決策を探しましたが、見つかりませんでした。

SqlConnection私が見つけた唯一の解決策は、とSqlCommandを使用しているため、WindowsPhoneでは使用できませんSqlDbType

列の宣言方法は次のとおりです。

    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();

誰かが回避策を知っていますか?

よろしくお願いします!!

4

2 に答える 2

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();
                }
            }
        }
于 2012-07-06T18:25:52.457 に答える
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

于 2012-07-06T16:19:02.187 に答える