にUser
割り当てられた がありClient
ます。オブジェクトを引き出すとき、オブジェクトをその一部としてUser
取得します。Client
単純。
これは、ログイン時に正常に機能します。ログインしたユーザーに関係なく、User
オブジェクトには があります。Client
ただし、まったく同じ方法を使用しUser
て、ログイン時に as を取得し、管理メニューから編集するとClient
、null
.
私は時々言います:
1) Firefox の場合 -すべてではありませんがほとんどのユーザー (および私自身) の詳細を表示しようとすると、 にClient
添付されたUser
が になりますnull
。が実際に存在するUsers
ため、表示できるのは の 2 つだけです。Client
2) Chrome の場合 - すべてのユーザー (自分を除く) が表示されます。自分のユーザーを表示しようとした場合にのみClient
、null
.
理解できない; どちらのブラウザも単純に同じ URL にアクセスします。つまり/Users/EditGet/28
、2 つの異なるメソッド (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: CustomContext:
public class CustomContext : DbContext, ICustomContext
{
public IDbSet<User> Users { get; set; }
public IDbSet<Client> Clients { get; set; }
}