C# 通用存储库返回同一列表中的不同对象<&燃气轮机;

C# 通用存储库返回同一列表中的不同对象<&燃气轮机;,c#,entity-framework,linq,dynamic,repository,C#,Entity Framework,Linq,Dynamic,Repository,今天我遇到了一个有趣的问题。我在大多数项目中都使用一个通用存储库,如: public interface IGenericRepository<T> where T : class { IEnumerable<T> CokGetir(Expression<Func<T, bool>> predicate); T Getir(Expression<Func<T, bool>> predicate); v

今天我遇到了一个有趣的问题。我在大多数项目中都使用一个通用存储库,如:

public interface IGenericRepository<T> where T : class
{
    IEnumerable<T> CokGetir(Expression<Func<T, bool>> predicate);
    T Getir(Expression<Func<T, bool>> predicate);
    void Ekle(T entity);
    void Duzenle(T entity);
    void Sil(T entity);
}
编辑2:

这是第二次编辑,提供了有关该主题的更多信息。如果用户第一次连接到集线器,则不会出现此问题。但是,当用户刷新网页时,signal重新分配用户的
ConnectionId
,并将其重新注册到聊天频道。此时,其中一个
kullanicilar
对象将丢失与表的所有关系

此外,正如我所观察到的,在第一次运行时,当新用户连接时,kullanicilar有两个不同的对象(数据和动态对象),它们都与其他表有关系。如上所述,当用户刷新页面时,它将丢失关系。

我真的很困惑

凭直觉,你能试试
var kullanicilar=\u uow.Depo().CokGetir(p=>p.YayinId.Equals(YayinId))
(不带
ToList
),也尝试一次,不带谓词,看看是否返回了大部分动态对象。请在帖子中添加
ChatUserDetails
@KeyurPATEL的定义,我也尝试过,但结果相同@FedericoDipuma添加了
ChatUserDetails
类。您是在
DbSet
中添加新对象并在
SaveChanges
之前查询它,还是关闭DbContext?如果是这种情况,您的
ChatUserDetails
可能只是在本地缓存中,因此无法从数据库中获取。@FedericoDipuma我仔细检查了工作流,查看是否有您提到的问题,但我没有发现任何问题。将新对象添加到
DbSet
后,我总是调用
SaveChanges
。然而,你对本地缓存的想法在我看来也是合理的。我会调查的。
public IEnumerable<T> CokGetir(Expression<Func<T, bool>> predicate)
{
    if (predicate != null)
    {
        return _objectSet.Where(predicate);
    }
    return _objectSet.AsEnumerable();
}
var kullanicilar = _uow.Depo<ChatUserDetails>().CokGetir(p => p.YayinId.Equals(yayinId)).ToList();
public partial class ChatUserDetails
{
    public int ID { get; set; }
    public string ConnectionId { get; set; }
    public string KullaniciId { get; set; }
    public int YayinId { get; set; }

    public virtual AspNetUsers AspNetUsers { get; set; }
    public virtual YAY_Yayinlar YAY_Yayinlar { get; set; }
}