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; }
}