Невозможно привести объект типа «System.Int64» к типу «System.Int32». - PullRequest
0 голосов
/ 09 июля 2019

Получение ошибки при запросе одинакового типа строки в

var orderTransferFromDb = await context.OrderTransfer.FirstOrDefaultAsync(t =>
t.ToMemberMobilePhone.ToUpperInvariant().Equals(mobilePhone.ToUpperInvariant()));

public async Task<bool> UpdateOrderTransferToMemberId(string mobilePhone, string memberid)
{
    if (mobilePhone != null)
    {
        using (var context = ContextManager.ClubContext())
        {
            var orderTransferFromDb = await context.OrderTransfer.FirstOrDefaultAsync(t => t.ToMemberMobilePhone.ToUpperInvariant().Equals(mobilePhone.ToUpperInvariant()));
            if (orderTransferFromDb != null)
            {
                context.Attach(orderTransferFromDb);
                orderTransferFromDb.ToMemberId = memberid;
                await context.SaveChangesAsync();
            }
            return true;
        }
    }
    throw new Exception("MobilePhone is null. (UpdteOrderTransferByEmail)");     
}

ordertransfer model

sql

Аргументами являются как string, так и в SQL Server nvarchar(13)

Чем это может быть вызвано?

1 Ответ

1 голос
/ 09 июля 2019

В вашем коде нет ничего плохого. Вам нужно дважды проверить свой контекст, правильно ли он сопоставлен с вашим объектом.

Чтобы сравнить строку без регистра, используйте это

var orderTransferFromDb = await context.OrderTransfer.FirstOrDefaultAsync(t => string.Equals(t.ToMemberMobilePhone, mobilePhone, StringComparison.OrdinalIgnoreCase));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...