0

Я хотел бы получить результаты из базы данных, используя Entity Framework, и отфильтровать эти результаты на основе того, является ли пользователь asp.net администратором, используя статический метод.статические данные о членстве в статическом методе

Учитывая этот код, могут ли быть случаи, когда пользователь, не являющийся администратором, будет обслуживаться результатами администратора?

Если да, то как бы достичь желаемого результата с помощью статического метода?

public class Listings 
{ 
    public static List<Listing> GetListings() 
    { 
     bool isAdmin = User.IsInRole("admin"); 

     List<Listing> listings; 

     using(DBContext dbContext = new DBContext()) 
     { 
      listings = (from l in dbContext.Listings 
         where l.Public || isAdmin 
         select l).ToList(); 
     } 

     return listings 
    } 
} 
+1

Статические методы не болят, статические поля могут (с ASP.NET многопоточная). –

ответ

1

Это зависит от того, где вы найдете DbContext. Его методы экземпляра не являются потокобезопасными.

Если он создан в области запроса ASP.NET (у вас есть новый экземпляр в каждом из независимых запросов), тогда вы в безопасности, код правильный.

Если это общий доступ, все может произойти, скорее всего, вы получите исключения из параллельного доступа к одному и тому же контексту db.

Узнайте больше от аналогичных нитей

One DbContext per web request... why?

+0

Благодарим вас за ответ. В настоящее время каждый пользователь получает свой собственный DBContext, и я отредактировал свой вопрос, чтобы это отразить. – user3102896

+0

Тогда вы в безопасности, код в порядке. –

Смежные вопросы