也许标题被误解了,但是我要在这里解释我的情况。
因此,考虑具有虚拟属性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
答案 0 :(得分:0)
我在EF6中使用AsNoTracking()
扩展方法来解决性能问题,但是我意识到在EFCore中,此特定方法有点不同(我正在迁移代码)。所以,我只删除了方法
答案 1 :(得分:-1)
您要在某个地方更新Country对象吗?如果属性的键具有默认值,它将被标记为已添加。那是我的猜测。