2016-02-18 2 views
0

У меня есть следующие EntityFramework.DynamicFilters на моих данных многопользовательских:Включение EntityFramework.DynamicFilters параметров в области видимости LINQPad

protected override void OnModelCreating(DbModelBuilder modelBuilder) { 
    [code removed for brevity] 
    modelBuilder.Filter("NegotiationPermissionFilter", 
     (NegotiationPermission np, string userId, List<Guid> groupIds) => 
      (np.ApplicationUserId == userId) || (groupIds.Contains(np.GroupId)), 
      () => "",() => new List<Guid>()); 
} 

Я хочу запросить данные через LINQPad.

Как настроить LINQPad, чтобы позволить мне устанавливать значения этих параметров с областью?

ответ

1

Добавить C# Statement в LINQPad так:

var groupIds = new List<Guid>(); 
groupIds.Add(new Guid("283f872c-e3c9-e511-8272-984be10349a2")); 
groupIds.Add(new Guid("2c673813-66cb-e511-8274-984be10349a2")); 
this.SetFilterScopedParameterValue("NegotiationPermissionFilter", "userId", "b7562160-4416-49aa-9cb8-01bd7db93d59"); 
this.SetFilterScopedParameterValue("NegotiationPermissionFilter", "groupIds", groupIds); 
var q = Negotiations.Include("NegotiationPermissions").Take (100); 
q.Dump(); 

Если эти идентификаторы GUID относятся к данным в БД.

  • Hit F4, чтобы вызвать LINQPad-х Query Properties диалог
  • Добавить Additional Reference в EntityFramework.DynamicFilters.dll
  • Тип в Additional Namespace Import из EntityFramework.DynamicFilters
  • Нажмите Set as default for new queries, если это будет регулярная вещь для вас
  • Нажмите OK.

Нажмите F5, чтобы выполнить запрос.

Благодаря Jon Skeet для this answer here, который показал мне, почему мои данные не появлялись, когда я знал, что это должно быть.