我有一个User
分配给一个Client
. 拉出User
对象时,我将Client
对象作为它的一部分。简单的。
这在登录时可以正常工作。无论我以谁身份登录,该User
对象都有一个。Client
但是,使用与登录时完全相同的方法获取User
,通过管理菜单对其进行编辑,Client
有时是null
.
我有时会说:
1) 在 Firefox 中 - 当试图查看大多数(但不是全部)用户(和我自己)的详细信息时,附加Client
到. 由于实际存在,只有几个将是可见的。User
null
Users
Client
2) 在 Chrome 中 - 所有用户(我自己除外)都是可见的。只有在尝试查看我自己的用户时Client
才会null
.
我不明白; 两种浏览器都只是简单地访问相同的 URL,即/Users/EditGet/28
,即使使用两种不同的方法 (GetById
和GetByUserName
),它也提供了相同的结果——尽管无可否认,它们都使用了基本的 Get 函数:
编辑: BaseService 类一起而不是编辑。
internal CustomContext context;
internal DbSet<TEntity> dbSet;
public BaseService(CustomContext context)
{
this.context = context;
this.dbSet = context.Set<TEntity>();
}
public virtual IEnumerable<TEntity> Get(
Expression<Func<TEntity, bool>> filter = null,
Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null,
string includeProperties = "")
{
IQueryable<TEntity> query = dbSet.Where(e => !e.Deleted);
if (filter != null)
{
query = query.Where(filter);
}
foreach (var includeProperty in includeProperties.Split(new [] {','}, StringSplitOptions.RemoveEmptyEntries))
{
query = query.Include(includeProperty);
}
return orderBy != null ? orderBy(query).ToList() : query.ToList();
}
我不确定为什么浏览器的选择会影响后端查询的结果。当然,无论我使用什么浏览器,它都应该Client
返回User
。
我假设基本 Get 方法可能存在基本错误,但它并不能解释我所看到的行为......
如果有人能对此有所了解,我将不胜感激。
编辑 2:自定义上下文:
public class CustomContext : DbContext, ICustomContext
{
public IDbSet<User> Users { get; set; }
public IDbSet<Client> Clients { get; set; }
}