Возможно, название неправильно понято, но я попытаюсь объяснить мою ситуацию здесь.
Итак, учитывая мою сущность Person
, которая имеет виртуальное свойство Country
, следующим образом:
public class Person {
public long Id { get; set;}
public short IdCountry { get; set;}
public virtual Country Country { get; set; }
...
}
и отображение следующим образом:
...
builder.HasOne(c => c.Country)
.WithMany()
.HasForeignKey(c => c.IdCountry);
и мой репозиторий является общим.
Что происходит здесь, когда я пытаюсь сохранить некоторые изменения в Person
,Country
Состояние сущности пришло ко мне как Added
, что не имеет смысла.
Я привожу здесь похожий пример того, что со мной происходит.На самом деле, у меня есть, как и пять других виртуальных свойств в моем классе Person
, и некоторые из них находятся в этом состоянии (Added
).
Кто-нибудь когда-нибудь имел дело с этим раньше?Заранее спасибо.
РЕДАКТИРОВАТЬ: Ansewing @alans ответ: я делаю что-то похожее, как показано:
foreach (var entrie in entry.Context.ChangeTracker.Entries())
{
try
{
key = entrie.Entity.GetType().GetProperty("Id").GetValue(entrie.Entity, null);
}
catch (Exception ex)
{
key = null;
}
if (key != null && entrie.State == EntityState.Added)
{
entrie.State = EntityState.Unchanged;
}
else if (Convert.ChangeType(key, typeof(long)) as long? == 0)
{
entrie.State = EntityState.Added;
}
}
_dbContext.SaveChanges();
@ TanvirArjel этот метод выше, где состояние приходит как Added