System.InvalidOperationException: The instance of entity type 'ProjectAssignment' cannot be tracked because another instance with the same key value for {'ProjectID'} is already being tracked. When attaching existing entities, ensure that only one entity instance with a given key value is attached. Consider using 'DbContextOptionsBuilder.EnableSensitiveDataLogging' to see the conflicting key values.
at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IdentityMap`1.Add(TKey key, InternalEntityEntry entry)
at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.St
我使用Worker(ID和其他列)和Project(ID和其他列)实体以及ProjectAssignment(多个Project ID对应多个Workers)交叉绑定创建了一个项目。但是,当我尝试获取ProjectAssignment数据时,在Application Insights中出现错误。奇怪的是之前没有显示id。
这里是链接:https://github.com/Streamc/ContosoObserve1/tree/master/Proj_s
context.Database.EnsureCreated();
var ProjectAssignments = new ProjectAssignment[]
{
new ProjectAssignment
{
ProjectID = Projects.Single( i => i.ID == 1).ID,
WorkerID = Workers.Single( i => i.ID == 1).ID,
},
new ProjectAssignment
{
ProjectID = Projects.Single( i => i.ID == 1).ID,
WorkerID = Workers.Single( i => i.ID == 2).ID,
},
new ProjectAssignment
{
ProjectID = Projects.Single( i => i.ID == 1).ID,
WorkerID = Workers.Single( i => i.ID == 3).ID,
},
new ProjectAssignment
{
ProjectID = Projects.Single( i => i.ID == 2).ID,
WorkerID = Workers.Single( i => i.ID == 1).ID,
},
new ProjectAssignment
{
ProjectID = Projects.Single( i => i.ID == 3).ID,
WorkerID = Workers.Single( i => i.ID == 1).ID,
},
new ProjectAssignment
{
ProjectID = Projects.Single( i => i.ID == 4).ID,
WorkerID = Workers.Single( i => i.ID == 1).ID,
},
new ProjectAssignment
{
ProjectID = Projects.Single( i => i.ID == 2).ID,
WorkerID = Workers.Single( i => i.ID == 2).ID,
},
new ProjectAssignment
{
ProjectID = Projects.Single( i => i.ID == 2).ID,
WorkerID = Workers.Single( i => i.ID == 3).ID,
},
new ProjectAssignment
{
ProjectID = Projects.Single( i => i.ID == 2).ID,
WorkerID = Workers.Single( i => i.ID == 4).ID,
}
};
foreach (ProjectAssignment ss in ProjectAssignments)
{
context.ProjectAssignments.Add(ss);
}
context.SaveChanges();
public class ProjectAssignment
{
[Key]
public int ProjectID { get; set; }
public int WorkerID { get; set; }
public Project Project { get; set; }
public Worker Worker { get; set; }
}
public class Worker
{
public int ID { get; set; }
public string Firstname { get; set; }
public string Lastname { get; set; }
public string Fathername { get; set; }
public string email { get; set; }
public string Company_name { get; set; }
public ICollection<ProjectAssignment> ProjectAssignment { get; set; }
}
public class Project
{
public int ID { get; set; }
public string Name { get; set; }
public string Customer_Company { get; set; }
public string Executive_Company { get; set; }
public int ManagerID { get; set; }
public int WorkerID { get; set; }
public DateTime Begin_date { get; set; }
public DateTime End_date { get; set; }
public int Priority { get; set; }
public string Test_comment { get; set; }
public ICollection<ProjectAssignment> ProjectAssignment { get; set; }
}