您的位置:首页 > 数据库

MonoRail和Linq To SQL的兼容性问题

2008-03-21 16:52 246 查看
今天无意中发现的一个兼容性问题。如果你使用了Monorail+Linq进行开发,这个问题很值得注意。

我在项目中使用Linq内置的OnXXXChanged/OnXXXChanging进行数据有效性验证,比如

partial void OnTopicChanging(string value)

public void Post([DataBind("article")]ArticleInfo articleInfo)

{}

然后我在Globle.ascx.cs中进行未处理异常的捕获

但奇怪的是,当OnTopicChanging中的异常发出后,Globle.ascx.cs竟然无法捕获。也就是说,如果你直接像我这样绑定数据并处理异常的话,是无法得到想要的结果的。

其实原因很简单,SmartDispatcherController在数据绑定的时候用了一个try catch,然后把绑定过程中发生的所有错误全部截获,并放到了BoundInstanceErrors中去了。

解决方法有两个:1.判断BoundInstanceErrors的Count并做相应处理;2.把OnTopicChanging中的验证移到OnValidate中去....

怨念啊~~~我不知道ASP.NET MVC是否存在类似的问题,有条件的朋友可以测试一下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: