2

User割り当てられた がありClientます。オブジェクトを引き出すとき、オブジェクトをその一部としてUser取得します。Client単純。

これは、ログイン時に正常に機能します。ログインしたユーザーに関係なく、Userオブジェクトには があります。Client

ただし、まったく同じ方法を使用しUserて、ログイン時に as を取得し、管理メニューから編集するとClientnull.

私は時々言います:

1) Firefox の場合 -すべてではありませんがほとんどのユーザー (および私自身) の詳細を表示しようとすると、 にClient添付されたUserが になりますnull。が実際に存在するUsersため、表示できるのは の 2 つだけです。Client

2) Chrome の場合 - すべてのユーザー (自分を除く) が表示されます。自分のユーザーを表示しようとした場合にのみClientnull.

理解できない; どちらのブラウザも単純に同じ 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; }
}
4

2 に答える 2