Tag: lazy initialization

使用无状态会话延迟查找字典值

在我的应用程序中,我设置了一个三元字典映射,以便对于给定的用户,我可以为属于该用户的对象的每个实例检索“设置”。 也就是说,我有类似的东西: public class User { public virtual IDictionary BazSettings { get; set; } //… 所以每当我有一个Baz对象时,我都可以通过currentUser.BazSettings[baz]查找当前用户的baz设置。 我希望能够使用无状态会话来执行此操作,但是我使用以下代码获得了LazyInitializationException : //int bazId; using (IStatelessSession session = Global.SessionFactory.OpenStatelessSession()) { var currentUser = session.Get(Membership.GetUser().ProviderUserKey); var baz = session.Get(bazId); var bazSettings = currentUser.BazSettings[baz]; // raises `LazyInitializationException` 当我使用ISession ,问题就会消失。 完整的NHibernate错误消息包括文本“没有会话或会话已关闭”。 这是有道理的,因为在使用无状态会话时,实体未连接到会话。 但是,我认为有一种方法可以使用无状态会话来执行此查找。 如何使用无状态会话执行查找currentUser.BazSettings[baz] ?

.net核心dependency injection是否支持Lazy

我试图使用通用的Lazy类来实例化.net核心dependency injection扩展的昂贵类。 我已经注册了IRepo类型,但我不确定Lazy类的注册是什么样的,或者它是否支持。 作为一种解决方法,我使用了这种方法http://mark-dot-net.blogspot.com/2009/08/lazy-loading-of-dependencies-in-unity.html 配置: public void ConfigureService(IServiceCollection services) { services.AddTransient(); //register lazy } 控制器: public class ValuesController : Controller { private Lazy _repo; public ValuesController (Lazy repo) { _repo = repo; } [HttpGet()] public IActionResult Get() { //Do something cheap if(something) return Ok(something); else return Ok(repo.Value.Get()); } }