【问题标题】:Warn when leaving scope with unsaved property values使用未保存的属性值离开范围时发出警告
【发布时间】:2010-10-11 10:10:47
【问题描述】:

我们有自己的自定义 ORM 包装器,其中包含 ContactCompany 等类,它们具有 NameAddress 等属性。你“创建”了一个类的实例,它隐式地从数据库中下载当前记录:

// fetch a contact with ID myRecordID from connection myConnection
Contact myContact = Contact.Create(myRecordID, myConnection);
myContact.Birthday = Date.Now;

事情是这样的:出于性能原因(以及其他考虑因素,例如事务),在设置属性时,保存不会隐式发生。相反,您必须致电save()

myContact.save(); // great! the new birthday is in the database

这很好用——除非你忘记打电话给save()。编译器不会发现问题,但上面的代码如果不保存就不会做任何有用的事情

我想知道 API 是否可以让编译器知道,在设置属性后,如果在 Contact 实例离开范围之前调用 save() 没有,编译器应该发出警告.

【问题讨论】:

  • 你有单元/集成测试吗?
  • 单元测试只会确认我已经知道的:生日尚未设置。它不会告诉我为什么。

标签: api .net-3.5


【解决方案1】:

您必须实施一些措施,让您的代码知道实体已更改。例如,通过在您的实体中实现 INotifyPropertyChanged 并监听更改。在需要持久化到数据库的每个属性上引发属性更改。

更改联系人后,您甚至可以在交易结束时自动保存联系人。当然你需要添加基础设施代码。

【讨论】:

  • 这对我没有帮助;我需要一种方法让 API 检测到该范围已离开。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-05
  • 2016-06-25
  • 2011-04-10
  • 2014-09-05
  • 1970-01-01
  • 2019-06-18
  • 1970-01-01
相关资源
最近更新 更多