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

时间:2009-04-14 23:17:03

标签: c# database entity-framework orm settings

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

是否可以使用Properties.Settings.Default.MySetting功能,还是有更好的方法来做这种事情?

2 个答案:

答案 0 :(得分:0)

难道你不能只创建上一个对象的(深层)副本,并将其用作下一个对象,允许用户覆盖更改的任何字段吗?这样,字段将是用户上次输入的内容,每个用户个性化,并在他们打开这些字段时更新。

如果你有办法记住每个用户输入的最后一件事,你甚至会在会话之间保留这一点。

OP评论:

  

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

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

例如,假设您的表单是关于员工的数据输入,并且它有一个下拉,我不知道,employeeType,这是“免除”(没有加班)或“非免除”(获得加班)。您从数据库中提取了employeeType的值,并且您希望输入的下一个员工具有与上次输入的员工相同的值,以保存数据条目人员击键。因此,您的深层副本只会将复制的员工与相同的数据库employeeType相关联。

但是对于属性数据(如名称),你可以复制一份。

答案 1 :(得分:-1)

这取决于你想要达到的目标。使用MySetting功能的好处是,下次关闭应用程序时可以保留“最新”属性。

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

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