1

我再次遇到了视觉工作室灯开关的问题。现在是关于自定义验证。我有一个实体,它有一个外键引用另一个实体: 在此处输入图像描述

RouteItem 包含 FacilityItem 的外键,如下所示:

在此处输入图像描述

我现在要做的是验证 RouteItem 中的 ROUTENAME。我必须确保所选设施中不存在 routname。

我的验证代码如下所示:

    IEnumerable<RouteItem> items = this.DataWorkspace.dsMESOracle.dtRoutes.GetQuery().Execute();

        if (this.Details.EntityState == EntityState.Added)
        {
            items = items.Where(e => e.ROUTENAME == ROUTENAME && e.MES_FACILITY == MES_FACILITY);
            if (items.Count() > 0)
            {
                results.AddPropertyError(ValidationMsgRes.ROUTES_ROUTENAME_ALREADY_EXISTS);

            }
        }
        else if (this.Details.EntityState == EntityState.Modified)
        {
            //Ignore the current entity if its modified otherwise it will always get count > 0
            items = items.Where(e => e.ROUTENAME == ROUTENAME && e.MES_FACILITY == MES_FACILITY && e != this);
            if (items.Count() > 0)
            {
                results.AddPropertyError(ValidationMsgRes.ROUTES_ROUTENAME_ALREADY_EXISTS);

            }
        }

到目前为止,验证逻辑工作得很好——它做了它应该做的事情。主要问题是,this.MES_FACILITY如果 lightswitch 尝试保存/更新更改,则访问导致以下错误:

在此处输入图像描述

acilityItem temp = this.MES_FACILITY;如果我只写验证实现,也会发生错误。

如果我删除所有引用/访问this.MES_FACILITY验证实现中的所有内容,一切都会完美。

验证是真还是假也无关紧要。问题总是出现!PS:其他实体和外键也会出现问题,这不是 RouteItem - FacilityItem 组合的问题

4

1 回答 1

0

找到了解决此错误/问题的方法:

http://msdn.microsoft.com/en-us/library/bb738618.aspx http://knowledgebase.progress.com/articles/Article/000028868

解决方法 1. 清理整个解决方案 2. 在整个解决方案/项目文件夹中搜索 ConcurrencyMode="Fixed" 并删除它 3. 重建解决方案 4. 开心!

它对我有用:)

于 2012-07-19T08:35:01.970 回答