C# 在实体框架核心中计算列表对象的EntityState时发生异常

C# 在实体框架核心中计算列表对象的EntityState时发生异常,c#,.net,asp.net-core,entity-framework-6,entity-framework-core,C#,.net,Asp.net Core,Entity Framework 6,Entity Framework Core,我正在构建一个小型日志应用程序。在少数情况下,我通过计算EntityState来保存一个TransactionHistory对象。将新对象添加到DomainObject(TransactionHistory)时,实体状态将更改为added并且SaveChanges()工作正常 public void LogTransactionHistory() { var transactionsHistory = new TransactionsHistory(); transacti

我正在构建一个小型日志应用程序。在少数情况下,我通过计算
EntityState
来保存一个
TransactionHistory
对象。将新对象添加到
DomainObject
TransactionHistory
)时,实体状态将更改为added并且
SaveChanges()
工作正常

public void LogTransactionHistory()
{
     var transactionsHistory = new TransactionsHistory();

     transactionsHistory.TransactionId = 1123;
     transactionsHistory.Status = 2;
     transactionsHistory.Comments = "Single Entity";

     context.TransactionsHistory.Add(transactionsHistory);

     if (context.Entry(transactionsHistory).State == EntityState.Added)
     {
         context.SaveChanges();
     }
}
在保存
交易历史
对象列表并评估
实体状态
时,我遇到了以下异常:

找不到实体类型“列表”。确保已将实体类型添加到模型中

这是我的代码:

public void LogHistoryList()
{
    var transactionHistoryList = new List<TransactionsHistory>();

    transactionHistoryList.Add(new TransactionsHistory()
            {
                TransactionId  = 50331,
                Status = 2,
                Comments = "Multiple entities",
            });

    context.TransactionsHistory.AddRange(transactionHistoryList );

    var addedEntities = context.ChangeTracker.Entries()
                .Where(x => x.State == EntityState.Added);

    // checking the entity state of transactionHistoryList
    if (context.Entry(transactionHistoryList).State == EntityState.Added) // exception
    {
        context.SaveChanges();
    }
}
有人能帮我解决这个问题吗?我遗漏了什么吗


提前感谢

在此场景中,您可以从
addedIdentity
中的
ChangeTracker
中获得所有
添加的
实体,并且无需在
中再次检查if(context.Entry(transactionHistoryList).State==EntityState.added)

context.Entry
接受一个
实体
,但将
实体的范围
传递给
context.Entry

你必须换成这个

context.transactionHistory.AddRange(transactionHistoryList);
var addedEntities=context.ChangeTracker.Entries()
.Any(x=>x.State==EntityState.Added);
if(附录)
{
SaveChanges();
}
更新

如果要检查添加的所有实体,可以使用此选项

foreach(ChangeTracker.Entries()中的var实体)
{
if(entity.State=EntityState.Added)
{
//剂量
}
}

我可以通过上述方法保存更改。但我的问题是为什么
if(context.Entry(transactionHistoryList).State==EntityState.Added)
引发异常。@Vijay因为
Entry
方法需要单个实体实例,而您正在传递列表。@Vijay因为
context.Entry(transactionHistoryList).State
获取一个
实体的状态
并在
条目
方法中接受一个
实体
,但将一系列实体传递给
条目
方法
public partial class TransactionsHistory
{
    public long TransactionId { get; set; }
    public short? Status { get; set; }
    public string Comments {get ;set;}
}