.Net 4使用LinqToSql的动态对象?

时间:2010-07-07 14:38:51

标签: c# linq-to-sql dynamic .net-4.0

在我们的Smartclient应用程序中,我们目前使用PostSharp将get / set代码注入自动属性,以实现Dirty状态跟踪和INotifyPropertyChanged事件。

我们经常将这些业务对象与LinqToSql一起使用。我们想要删除对Postsharp的这种依赖,而.Net 4.0 ExpandoObject看起来很完美。我们可以添加动态属性并添加自定义get / set代码,而无需在HasChanged()实现的每个属性上重复它。

我的问题是这个;我们如何从LinqToSql获取动态ExpandoObject的实例?它有可能吗?

如果没有,还有其他方法可以实现吗?我们基本上都有业务对象,每个业务对象有50-100个属性,并且需要实现INotifyPropertyChanged而不需要数百行重复代码

1 个答案:

答案 0 :(得分:0)

现在看来有三种方法可以解决这个问题

  1. 代理对象,例如城堡动态代理
  2. 代码生成,例如T4模板
  3. 代码编织,例如Postsharp
  4. Postsharp对我们来说似乎是一个很好的方法,因为我们使用defaukt构造函数获得了所需的行为,并且不必担心生成的代码的维护。我们只是向POCO实体添加一个属性而忘记它。