使用未保存的属性值离开范围时发出警告

时间:2010-10-11 10:10:48

标签: api .net-3.5

我们有自己的自定义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是否可以让编译器知道,当设置了属性时,编译器应该警告save() 是否在{{1}之前调用实例离开范围。

1 个答案:

答案 0 :(得分:0)

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

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