Ошибка
The instance of entity type 'Assignee' cannot be tracked because another instance with the same key value for {'Id'} is already being tracked.
When attaching existing entities, ensure that only one entity instance with a given key value is attached
из json получаю
class Issue
{
int id {get;set;}
Assingee Assingee {get;set;}
}
class Assingee
{
int id {get;set;}
}
...
db.Issues.Add(entity);
не помню как обойти. Issue новая, Assingee старый
using var tx = db.Database.BeginTransaction();
foreach (var x in Issue.Issues)
{
var person = db.Persons.Find(x.Assignee!.Id);
if (person != null)
db.Entry(person).CurrentValues.SetValues(x.Assignee);
else
db.Add(x.Assignee);
db.SaveChanges();
if (db.Issues.Find(x.Id) is Issue issue)
db.Entry(issue).CurrentValues.SetValues(x);
else
{
if (person != null)
x.Assignee = person; //<= так заработало, но как-то криво, хотя и логично, может можно лучше?
db.Issues.Add(x);
}
db.SaveChanges();
}
tx.Commit();
var id = Issue.Issues.MaxBy(x => x.Id).Id + 1;
Issue.Issues.Add(new Issue { Id = id, Name = $"Issue {id}", Assignee = Person.Persons[Random.Shared.Next(0, 3)] });
Здравствуйте, Разраб, Вы писали:
По уму у тебя должно быть описание типа
https://infostart.ru/1c/articles/402038/
[Column("_Fld48RRef")]
[Required]
[MaxLength(16)]
public byte[] РеквизитСправочникId { get; set; }
virtual public Справочник.Номенклатура РеквизитСправочник { get; set; }
https://metanit.com/sharp/efcore/3.1.php
Здравствуйте, Serginio1, Вы писали:
S>Здравствуйте, Разраб, Вы писали:
S>По уму у тебя должно быть описание типа https://infostart.ru/1c/articles/402038/
S>S>[Column("_Fld48RRef")]
S>[Required]
S>[MaxLength(16)]
S>public byte[] РеквизитСправочникId { get; set; }
S>virtual public Справочник.Номенклатура РеквизитСправочник { get; set; }
S>
S>https://metanit.com/sharp/efcore/3.1.php
это все есть, но не смотря использование using var db = ... все равно где-то инстансы сущностей протрэкались.
вот думаю может ServiceLifetime.Transient для db может? обработка в цикле проводится.
Здравствуйте, Разраб, Вы писали:
Р>это все есть, но не смотря использование using var db = ... все равно где-то инстансы сущностей протрэкались.
Р>вот думаю может ServiceLifetime.Transient для db может? обработка в цикле проводится.
Ну самое простое подписаться на события и посмотреть откуда ноги растут
https://learn.microsoft.com/ru-ru/dotnet/api/system.data.services.client.entitycollectionchangedparams?view=netframework-4.8.1