Tag: persistence

为什么隔离存储不会在我的WP7应用程序中持续存在?

我正在为我的应用程序使用IsolatedStorageSettings.ApplicationSettings。 与隔离存储相关的所有代码都发生在我的Application_Launching,Application_Activated,Application_Closing和Application_Deactivated方法中,如下所示: public IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings; private void Application_Launching(object sender, LaunchingEventArgs e) { if (settings.Contains(“myObjList”)) { App.ObjList = (ObservableCollection)settings[“myObjList”]; } else { settings.Add(“myObjList”, App.ObjList); } } private void Application_Activated(object sender, ActivatedEventArgs e) { if (settings.Contains(“myObjList”)) { App.ObjList = (ObservableCollection)settings[“myObjList”]; } else { settings.Add(“myObjList”, App.ObjList); } } private void Application_Deactivated(object sender, DeactivatedEventArgs e) { settings[“myObjList”] […]

如何在Protobuf-Net中保留一个可以为空的值的数组?

我正在从BinaryFormatter迁移到Protobuf-net(到目前为止,它似乎在存储大小和反序列化时间方面提供了巨大的改进)。 然而,我遇到的一个问题是double?[]数组不会以序列化的相同forms反序列化。 数组中任何null的值都会被全部删除 – 即如果我从一个包含6个元素[null,null,1,2,3,null]的数组开始,在反序列化后我最终得到一个数组[1 ,2,3]。 对于我的程序,我必须以与序列化之前完全相同的forms检索这些数组 – 如果使用BinaryFormatter则会发生这种情况。 到目前为止我提出的一个解决方案是为每一个创建两个数组,一个是double [],其中每个元素都有一个值,另一个是bool [],它可以用来描述原始值是否为null – 但是由于各种原因,这是非常低效的。 我可以在之前的相关问题中看到,ProtoMember可能有一个’SupportNull’选项,但是我找不到任何文档清楚地显示如何实现它,并且无法通过游戏来解决这个问题。 任何人都可以提供的帮助将非常感激。

是否可以在MS Entity Framework中查询新添加的对象

有没有办法在Entity Framework中查询或只访问新添加的对象(使用ObjectContext.AddObject方法)? 我的意思是当它尚未使用SaveChanges保存到数据存储时 我知道查询被转换为底层SQL并针对数据存储执行,并且它还没有这个新对象。 但无论如何,我很好奇 – 如果它没有得到支持,也许它在理论上是可能的。 如果不是,开发商如何处理它? 手动跟踪新对象并使用Linq查询对象? 同样的问题也适用于LinqToSql。

ORM /持久层建议

我正在开始一个新项目,我正在寻找一个非常好的ORM或非基于SQL的持久层。 对于这个项目,我真的不关心数据是如何持久化的,只要它可以以合理的速度查询和存储,最重要的是简单的查询。 应该无缝地处理并发(前端将在另一层上,并且将有几个同时用户,但不一定处理相同的数据)并且我必须更少关注数据层(简单查询,自动懒惰)加载等)更好。 我还想不惜一切代价避免使用基于字符串的查询,因此支持LINQ或其他直观且可能强类型查询的工具会获得很大的好处。 最后使用POCO对象是我真正想做的另一件事 这是我评估的产品列表以及它们不适合的原因,只是为了让我看不到任何关于使用它们的建议: NHibernate:疯狂的xml,太多的设置,高维护复杂性和模型更改的成本,会话工厂很乱,不符合我的需求 Castle ActiveRecord:基于NHibernate,少量文档以及与NHibernate相关的一些问题仍然适用。 此外,为了获得合适的模型,它需要很多属性,以便最好手动创建模式,并且处理关系的方式是一种耻辱。 Linq To SQL:缺少POCO对象,根据MS,它不会提高太多加class时间(EF是他们所承诺的) 实体Framweork:虽然在第4版中POCO对象是可能的,但它们仍然非常hacky并迫使你做太多的手工工作来设置。 此外,v4只是一个测试版 LLBLGen Pro:很好,尤其是SelfServicing适配器,但不是POCO。 此外,LINQ提供商还不是完美的。 最后,删除一组对象是不可能通过LINQ导致混合API(其中一个远非直观)和我不喜欢。 XPO:除了直观,非常缓慢的并发问题,而不是POCO SubSonic SimpleRepository:几分钟我以为我在做梦。 当我弄清楚事情是如何处理关系时,deam结束了 我也查看了MongoDB和CouchDB,但在这些情况下,相关对象的捕获看起来像是在做正确的事情之前需要进行太多测试。 此外,它们都没有提供强类型查询。 提前感谢您的建议!

MappingException:没有持久性 – NHibernate – 持久化适配器

好吧,我google了很多,并在那里找到了相同的建议(将hbm设置为嵌入式资源,在hibernate.cfg中添加hbm等等),尽管如此,我仍然没有得到它。 让我解释一下:我为检票口设备写了一个Communication Dll,我有一个配置模型类,用于通过TCP / IP配置该设备。 但是现在,我必须在DB上保留这个对象,所以我在我的模型中写了一个适配器,它将一个粘合到另一个。 这样,我的配置模型的适配器具有ID,IncludedDate等。 让我们来看看: DeviceConf Model类: public class DeviceConf : BaseModel // which have ID, IncludedDate, etc { private TGCommHelper.Entities.Configuration.TicketGateConfig _conf; public TGCommHelper.Entities.Configuration.TicketGateConfig conf { get { return _conf; } private set { _conf = value; } } public DeviceConf() { conf = new TGCommHelper.Entities.Configuration.TicketGateConfig(); } public DeviceConf(TGCommHelper.Entities.Configuration.TicketGateConfig config){ conf = […]

entity framework不会在SQL Express(MDF)中保留数据

我正在使用Entity Framework开发一个应用程序并将数据存储在.mdf数据库中。 我的代码可以读取数据,显然它也可以保存,但显然只能。 它没有错误,而程序正在运行它就像保存数据一样,我可以保存一个对象,处理上下文,创建一个新的,然后当我搜索我的对象它就在那里! 但是当我查询数据库以查看存储的数据时,那里什么都没有。 如果我关闭应用程序并再次运行它,则所有数据都将消失。 这是我为测试而编写的示例代码: using (DatabaseEntities e = new DatabaseEntities()) { for (int i = 0; i < 50; i++) { User u = new User(); u.Nome = "User" + i.ToString(); e.AddToUser(u); } int c = e.SaveChanges(true); List us = e.User.Where(x => x.ID < 50).ToList(); foreach (User u in us) Console.WriteLine(“ID: ” […]

RavenDB如何刷新?

我正在使用RavenDb嵌入式。 作为我整合测试的一部分,我想检查对象是否持久化。 当我在一个对象上SaveChanges然后检索它时,除非我处理我的连接,否则找不到它。 这对我不起作用,因为没有返回任何文件 using (var session = _dataDocumentStore.Instance.OpenSession()) { session.Store(file); session.SaveChanges(); } …. using (var session = _dataDocumentStore.Instance.OpenSession() ) { return session.Query().ToList(); } 我创建了一个Flush方法来处理和重新创建一个可以工作的EmbeddableDocumentStore,但是因为这是感觉基本的东西我可能会以错误的方式处理事情: public static IDocumentStore Initialize() { instance = new EmbeddableDocumentStore { DataDirectory = “App_Data/Database”, UseEmbeddedHttpServer = true, }; instance.Initialize(); return instance; } public void Flush() { instance.Dispose(); Initialize(); } 你如何坚持RavenDB,然后检查它一直存在? 对此的任何建议都会很棒