gpt4 book ai didi

IQueryable 上的 C# Entity Framework .ToList() 引发错误 System.Data.SqlTypes.SqlNullValueException : Data is Null

转载 作者:行者123 更新时间:2023-12-04 03:50:15 27 4
gpt4 key购买 nike

我过去看到过这个问题的一些变体,但没有一个适用于我的问题,所以我开始一个新的。

我有一个模型类 Transactions。它有一个字符串属性 TransactionNumber,如下所示:

public string TransactionNumber { get; set; }

它在数据库中有一列,如下所示:

TransactionNumber varchar(64) not null,

当我尝试抓取满足以下条件的实体时:

var transactions = transactionContext.Transactions
.Where(t => string.Equals(t.TransactionNumber, "15335564-1"));

然后尝试处理这些事务,如下所示:

if (transactions.Any())
{
foreach (Transaction transaction in transactions.ToList())
{
transaction.PaymentStatus = transactionStatus.Status;
}
}

我收到以下错误:

System.Data.SqlTypes.SqlNullValueException: Data is Null. This method or property cannot be called on Null values.

at Microsoft.Data.SqlClient.SqlBuffer.ThrowIfNull()
at Microsoft.Data.SqlClient.SqlBuffer.get_Int32()
at Microsoft.Data.SqlClient.SqlDataReader.GetInt32(Int32 i)
at lambda_method(Closure , QueryContext , DbDataReader , ResultContext , Int32[] , ResultCoordinator )

我尝试了其他方法,例如 FirstOrDefault(),但我遇到了同样的错误。

我不太确定它在哪里寻找 Int32

感谢任何帮助。

谢谢!

最佳答案

假设你的类是这样的:

public class Transactions {
public string TransactionNumber { get; set; }
// some int property
public int SomeInt { get; set; }
}

首先尝试声明 int 属性可为空

public class Transactions {
public string TransactionNumber { get; set; }
// some int property
public int? SomeInt { get; set; }
}

一旦确定是哪个属性导致了问题,您需要在代码中将其保留为空,或者在数据库中执行相反的操作(保护该列,使其永远不会为空)

关于IQueryable 上的 C# Entity Framework .ToList() 引发错误 System.Data.SqlTypes.SqlNullValueException : Data is Null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64540122/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com