- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在定义我的 DbConntextObj
_container.RegisterType<IDbConntextObj, DbConntextObj>(new HttpContextLifetimeManager<DbConntextObj>());
Unity 没有在 lifetimemanager 上调用 RemoveValue()
我有一个 Dbcontext 用于多个存储库。
我的 lifetimemanager 看起来像这样:
public class HttpContextLifetimeManager<T> : LifetimeManager, IDisposable
{
private readonly string _itemName = typeof(T).AssemblyQualifiedName;
public override object GetValue()
{
return HttpContext.Current.Items[_itemName];
}
public override void RemoveValue()
{
var disposable = GetValue() as IDisposable;
HttpContext.Current.Items.Remove(_itemName);
if (disposable != null)
disposable.Dispose();
}
public override void SetValue(object newValue)
{
HttpContext.Current.Items[_itemName] = newValue;
}
public void Dispose()
{
RemoveValue();
}
}
没有调用 DbContext Dispose 是件坏事吗?Unity 和 MVC3 有解决方法吗?
最佳答案
试试这个。
public class MvcApplication : HttpApplication
{
private IUnityContainer unityContainer;
private HttpContextDisposableLifetimeManager ContextLifeTimeManager;
/// <summary>
/// The start method of the application.
/// </summary>
protected void Application_Start()
{
unityContainer = new UnityContainer();
ContextLifeTimeManager = new HttpContextDisposableLifetimeManager();
//for some reason this event handler registration doesn't work, meaning we have to add code to
//Application_EndRequest as below...
//this.EndRequest += new EventHandler(ContextLifeTimeManager.DisposingHandler);
unityContainer.RegisterType<IUnitOfWork, EFUnitOfWork>(ContextLifeTimeManager);
unityContainer.RegisterType<IRepository<ShoppingCart>, ShoppingCartRepository>(new ContainerControlledLifetimeManager());
}
//this seems hackish, but it works, so whatever...
protected void Application_EndRequest(Object sender, EventArgs e)
{
if (ContextLifeTimeManager != null)
{
ContextLifeTimeManager.RemoveValue();
}
}
}
然后在您的 LifeTimeManager 实现中。
public class HttpContextDisposableLifetimeManager : LifetimeManager, IDisposable
{
const string _itemName = typeof(T).AssemblyQualifiedName;
public void DisposingHandler(object source, EventArgs e)
{
RemoveValue();
}
public override object GetValue()
{
return HttpContext.Current.Items[_itemName];
}
public override void RemoveValue()
{
Dispose();
HttpContext.Current.Items.Remove(_itemName);
}
public override void SetValue(object newValue)
{
HttpContext.Current.Items[_itemName] = newValue;
}
public void Dispose()
{
var obj = (IDisposable)GetValue();
obj.Dispose();
}
}
关于c# - DbContext Unity 不调用 HttpContextLifetimeManager.RemoveValue() 坏事?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9611541/
我正在努力向我的应用添加编辑和删除功能。编辑功能工作正常,但我的删除功能并不总是删除正确的值。 删除功能未按预期工作的情况: 当我添加新的数据节点(在我的应用程序中是新的供应商)时。 当我编辑某个值时
所以我遇到了一个奇怪的问题。本质上,我有一个数组,它是 tableView 的数据源: data : [(String: SomeDataStruct)] = [(username1, data1),
我已经设置了以下安全规则,但是 .removeValue() 仍然能够删除记录。我做错了什么? { "rules": { ".read": "auth != null", ".wr
我试图通过查询然后调用 query.ref.removeValue() 从我的数据库中删除一个特定节点,尽管每次运行这段代码时它都会删除整个子节点而不是仅仅删除节点。我的代码看起来像这样......
我希望当用户已经按下反对票时,下次他们按下反对票按钮时,他们将从反对票字典中删除。 Firebase.getDownvote(selectedPostTimeStamp: postItem.timeS
我对 Firebase 还比较陌生,因此非常感谢对此的任何见解。当我以这种方式调用 Firebase setValue(obj,callback) 函数时,它工作得很好。但是,当我尝试删除“ref”引
我有一个应用程序可以提供一些东西。我的想法是,优惠由我添加到我创建的另一个应用程序中,然后同时显示在用户设备上。 我只需要一个用户就可以接受报价,因此当第一个用户点击时,我会在报价引用上调用 remo
我正在我的 iOS 应用程序中测试 FireBase,到目前为止它非常棒,但似乎如果我使用 [fb removeValue]; 当我未连接时,更改并不总是反射(reflect)在其他任何地方. 这是我
这个问题在这里已经有了答案: The read failed: Permission denied error in firebase (1 个回答) 关闭 6 年前。 我已经开始为 ios 使用
我正在定义我的 DbConntextObj _container.RegisterType(new HttpContextLifetimeManager()); Unity 没有在 lifetimem
我正在尝试将数据写入 Firebase 数据库,但当我按下保存按钮时,我一直收到以下错误。 2016-12-02 11:09:42.548 StartupNow[1482:60415] [Fireba
我在 stackoverflow 中看到了很多答案,但没有一个对我有用! 这是我的代码: import UIKit import Firebase class ViewController: UIVi
我创建了一个简单的字典类,用于跨多个线程同步访问字典。我正在使用 DispatchQueue 来同步从字典中读取和写入值。我正在使用泛型,以便它可以与任何字典类型一起使用 K:Hashable 作为键
我是一名优秀的程序员,十分优秀!