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;}
}