繁体   English   中英

获取通过参数传递的对象的ID的问题

[英]Problems to get the Id of an object passed by parameter

我无法通过参数传递对象的ID。

编码:

private void SetEntityState(TEntity entity, EntityState entityStated)
{
    var entry = this.Context.Entry(entity);

    if (entry.State == EntityState.Detached)
    {
        // The problem is here.
        TEntity attachedEntity = this.DbSet.Where(
            x => x.Id.Equals(entity.Id)
            ).FirstOrDefault();

        if (attachedEntity != null)
        {
            var attachedEntry = this.Context.Entry(attachedEntity);

            attachedEntry.CurrentValues.SetValues(entity);

            attachedEntry.State = entityStated;
        }
        else
        {
            entry.State = entityStated;
        }
    }
}

问题在这里:

    TEntity attachedEntity = this.DbSet.Where(
        x => x.Id.Equals(entity.Id)
        ).FirstOrDefault();

“实体”的属性“ Id”始终返回0,但在调试中,我看到该值为3。

为什么会这样呢?

尝试这个

 TEntity attachedEntity = this.DbSet.Where(x => x.Id == entity.Id).FirstOrDefault();

要么

Int32 entityId = entity.Id;
TEntity attachedEntity = this.DbSet.Where(x => x.Id == entityId).FirstOrDefault();

也许您可以尝试(进行测试):

var entry = Context.Find(entity); 

代替

var entry = this.Context.Entry(entity);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM