Я использую EF Core и sqlite. Для следующих сущностей 1: 1:
public class Entity1:FullAuditedEntity<int>
{
public Entity2 Entity2 { get; set; }
public string Name { get; set; }
}
public class Entity2: FullAuditedEntity<int>
{
public string Name { get; set; }
[ForeignKey("Entity1Id")]
public Entity1 Entity1{ get; set; }
public int Entity1Id { get; set; }
}
и следующей вставки logi c:
entity1.Entity2 = new Entity2();
entity1= await entity1Repository.InsertAsync(entity1);//entity1Repository is of type IRepository<Entity1>
Код выше выдает:
Microsoft. EntityFrameworkCore.DbUpdateException: произошла ошибка при обновлении записей. Подробнее см. Внутреннее исключение. ---- Microsoft.Data.Sqlite.SqliteException: ошибка SQLite 19: «Ошибка ограничения FOREIGN KEY». at ...
Этот подход тоже не работает, выдает то же самое:
var entity2 = new Entity2();
entity1.Entity2 = entity2;
entity2.Entity1 = entity1;
entity1= await entity1Repository.InsertAsync(entity1);//entity1Repository
Что делаю не так, чего не хватает? Как правильно создать Entity1 и Entity2 с установленным свойством Entity2? Можно ли создать репо только с Entity1?
Заранее спасибо.
Обновление : Проблема решена. В реальном коде entity2 имеет собственную ссылку на entity3, которая явно выбрасывалась. Это была причина.