[BUG] Неправильное определение типа
От: Holms США  
Дата: 25.11.11 04:32
Оценка: 74 (1)
При таком запросе

public static void SaveUpdateUserSettings(int userId, string key, string data, byte[] binaryData)
{
    using (var ctx = CBloomNewsDataContext.Context)
    {
        UserSetting us = ctx.UserSettings.FirstOrDefault(_ => _.UserId == userId && _.Key == key);
        if (us == null)
        {
            ctx.Insert(new UserSetting
                                    {
                                        UserId     = userId,
                                        Key        = key,
                                        Data       = data,
                                        BinaryData = binaryData,
                                    });
        }
        else
        {
            us.Data       = data;
            us.BinaryData = binaryData; // <-- здесь 
            ctx.Update(us);
        }
    }
}

...
[TableName(Name="UserSettings")]
public partial class UserSetting
{
    [          PrimaryKey(1), Required               ] public int    UserId     { get; set; } // int(10)
    [          PrimaryKey(2), MaxLength(50), Required] public string Key        { get; set; } // nvarchar(50)
    [Nullable,                MaxLength(1073741823)  ] public string Data       { get; set; } // ntext(1073741823)
    [Nullable                                        ] public byte[] BinaryData { get; set; } // varbinary(-1)
}

если binaryData = null, то получаем ошибку
Implicit conversion from data type nvarchar to varbinary(max) is not allowed. Use the CONVERT function to run this query.


Callstack
>    BLToolkit.4.dll!BLToolkit.Data.DbManager.ExecuteOperation<int>(BLToolkit.Data.OperationType operationType, System.Func<int> operation) Line 4396 + 0xb bytes    C#
     BLToolkit.4.dll!BLToolkit.Data.DbManager.ExecuteNonQueryInternal() Line 615 + 0x51 bytes    C#
     BLToolkit.4.dll!BLToolkit.Data.DbManager.ExecuteNonQuery() Line 2793 + 0x8 bytes    C#
     BLToolkit.4.dll!BLToolkit.Data.DbManager.BLToolkit.Data.Linq.IDataContext.ExecuteNonQuery(object query) Line 184 + 0x8 bytes    C#
     BLToolkit.4.dll!BLToolkit.Data.Linq.Query<int>.NonQueryQuery(BLToolkit.Data.Linq.IDataContextInfo dataContextInfo, System.Linq.Expressions.Expression expr, object[] parameters) Line 213 + 0xc bytes    C#
     BLToolkit.4.dll!BLToolkit.Data.Linq.Query<int>.SetNonQueryQuery.AnonymousMethod__e(BLToolkit.Data.Linq.QueryContext ctx, BLToolkit.Data.Linq.IDataContextInfo db, System.Linq.Expressions.Expression expr, object[] ps) Line 201 + 0x12 bytes    C#
     BLToolkit.4.dll!BLToolkit.Data.Linq.Query<CBloomNewsDataModel.UserSetting>.Update(BLToolkit.Data.Linq.IDataContextInfo dataContextInfo, CBloomNewsDataModel.UserSetting obj) Line 820 + 0x53 bytes    C#
     BLToolkit.4.dll!BLToolkit.Data.Linq.Extensions.Update<CBloomNewsDataModel.UserSetting>(BLToolkit.Data.Linq.IDataContext dataContext, CBloomNewsDataModel.UserSetting obj) Line 288 + 0x3c bytes    C#
     CBloomNews.Database.dll!CBloomNews.Database.BussinesLogic.BL.Users.SaveUpdateUserSettings(int userId, string key, string data, byte[] binaryData) Line 440 + 0x11 bytes    C#


BLToolkit — последнея из GIT
... << RSDN@Home 1.2.0 alpha 5 (M4) rev. 1510>>
The life is relative and reversible.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.