C# db4o不会删除该记录

C# db4o不会删除该记录,c#,db4o,C#,Db4o,你好!尝试db4o,遇到以下问题:我无法删除记录: using (IObjectServer server = Db4oClientServer.OpenServer(HttpContext.Current.Server.MapPath("~/transfers.data"), 0)) { using (IObjectContainer client = server.OpenClient()) {

你好!尝试db4o,遇到以下问题:我无法删除记录:

using (IObjectServer server = Db4oClientServer.OpenServer(HttpContext.Current.Server.MapPath("~/transfers.data"), 0))
            {
                using (IObjectContainer client = server.OpenClient())
                {
                    var keyValuePair = (from KeyValuePair<DateTime, Transfer> d in client where d.Key < DateTime.Now.AddHours(-3) select d);
                    client.Delete(keyValuePair.First());
                    client.Commit();       
                }
            }

在此代码之后,数据库中对象KeyValuePair的数量不会更改。

这将不起作用!原因是KeyValuePair是一种值类型,这意味着它没有标识。然而,db4o通过对象的标识来管理对象!现在,C很高兴地将任何值类型装箱到一个对象,但这对db4o来说毫无用处,因为它在数据库中找不到任何具有给定标识的对象

您遇到了.NET和db4o行为之间令人恼火的极端情况。基本上没有很好的解决方法,尤其是因为db4o没有一个API来根据对象的内部id=删除对象

为了未来。不要为自己存储KeyValuePairs或任何结构。仅作为另一个对象的一部分。使用8.1,它有一个错误修复,防止它从不删除结构。这避免了这个问题