使用Castle Windsor和LinqToLDAP

时间:2014-11-20 09:00:25

标签: c# castle-windsor linq-to-ldap

我下载了LinqToLdap GIT示例项目,该项目使用SimpleInjector作为Inversion of Control容器,并将代码转换为Castle Windsor。我的配置代码如下所示:

container.Register(Component.For<ILdapConfiguration>()
            .UsingFactoryMethod(() =>
            {
                var config = new LdapConfiguration()
                .AddMapping(new UserImageMapping())
                .AddMapping(new UserMapping());

                config.ConfigurePooledFactory("my.ad.server");
                return config;
            }));


目录上下文注册为:

 container.Register(Component.For<IDirectoryContext>()
            .UsingFactoryMethod(() => new DirectoryContext(container.Resolve<ILdapConfiguration>())).LifestyleSingleton());


我遇到的这个问题是在查询中使用DirectoryContext,例如:

var photo =  context.Query<UserPhoto>().FirstOrDefault(u => u.EmployeeId == userQuery.Id);


上下文对象具有与之关联的提供程序列表,并且每次进行查询时这些提供程序的计数都会不断增加。这么多,使用几分钟就有数百个。我猜这与正确处理上下文有关,但是当我明确处理上下文后,后续查询失败,因为上下文被处理,并且由于某种原因,不会创建新的上下文。 有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

原来是LinqToLDAP代码中的一个小错误。开发人员已经确定了问题,并将在下一个版本中修复! (R 3.3.2)