C# ORM-使用C保存/恢复DB对象的默认值#

C# ORM-使用C保存/恢复DB对象的默认值#,c#,database,entity-framework,orm,settings,C#,Database,Entity Framework,Orm,Settings,为了帮助用户进行重复数据输入,我尝试实现一个系统,在添加新数据时可以记住以前的许多属性 是否可以使用Properties.Settings.Default.MySetting功能,或者是否有更好的方法来执行这类操作?您是否可以制作上一个对象的(深度)副本,并将其用作下一个对象,允许用户覆盖任何更改的字段?通过这种方式,字段将是用户上次输入的内容,每个用户都会进行个性化设置,并在更改这些字段时进行更新 如果你有办法记住每个用户最后输入的内容,你甚至可以在会话之间保存这些内容 OP评论: 不幸的是,

为了帮助用户进行重复数据输入,我尝试实现一个系统,在添加新数据时可以记住以前的许多属性

是否可以使用Properties.Settings.Default.MySetting功能,或者是否有更好的方法来执行这类操作?

您是否可以制作上一个对象的(深度)副本,并将其用作下一个对象,允许用户覆盖任何更改的字段?通过这种方式,字段将是用户上次输入的内容,每个用户都会进行个性化设置,并在更改这些字段时进行更新

如果你有办法记住每个用户最后输入的内容,你甚至可以在会话之间保存这些内容

OP评论:


不幸的是,当涉及到关系时,制作对象的深度副本会弄乱objectcontext。具有关系的新对象需要创建新的关系对象或从数据库查询现有对象

那么?如果该关系是与另一个实体(数据库中的外键)的关系,则它是uses-a关系,您只需保留它。如果它是属性,则复制它

例如,假设您的表单是关于员工的数据输入,它是employeeType的下拉列表,我不知道是“豁免”(无加班)还是“非豁免”(获得加班)。您从数据库中提取了employeeType的值,希望输入的下一个员工的值与上次输入的员工的值相同,以保存数据输入。因此,深度复制只会将复制的员工与相同的数据库employeeType相关联


但对于属性数据(如名称),您需要进行复制。

这取决于您试图实现的目标。使用MySetting功能的好处是,“最新”属性可以在下次关闭应用程序时持久化

我假设这是一个winforms应用程序,所以我可能会将每个备份对象最后一次保存的缓存实例保存在哈希表中的某个位置,然后在创建新表单时,在哈希表中查找备份对象,并将所需属性绑定到表单的新实例


然后,如果愿意,您可以将整个哈希表序列化并持久化到MySettings对象,这样用户每次访问应用程序时都可以使用它。

出于好奇,ORM与您的请求有什么关系?很少。我只是认为可能有一些普遍接受的方法可以做到这一点。不幸的是,当涉及到关系时,制作对象的深度副本会弄乱objectcontext。具有关系的新对象需要创建新的关系对象或从数据库查询现有对象。