C# PLS-00103:在预期以下情况之一时遇到符号“”:验证ForeignKey实体后LightSwitch出错

C# PLS-00103:在预期以下情况之一时遇到符号“”:验证ForeignKey实体后LightSwitch出错,c#,validation,foreign-keys,odp.net,visual-studio-lightswitch,C#,Validation,Foreign Keys,Odp.net,Visual Studio Lightswitch,我再次遇到了visual studio lightswitch的问题。现在是关于自定义验证。我有一个实体,它的外键指向另一个实体: RouteItem包含FacilityItem的外键,如下所示: IEnumerable<RouteItem> items = this.DataWorkspace.dsMESOracle.dtRoutes.GetQuery().Execute(); if (this.Details.EntityState == Entity

我再次遇到了visual studio lightswitch的问题。现在是关于自定义验证。我有一个实体,它的外键指向另一个实体:

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

    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);

            }
        }
我现在要做的是验证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);

            }
        }
到目前为止,验证逻辑工作得非常完美——它做了它应该做的事情。 主要问题是,如果lightswitch试图保存/更新更改,访问this.MES_设施会导致以下错误:

如果我只写acilityItem temp=this.MES\u FACILITY,也会发生错误;在验证实现中

如果我在验证实现中删除了对this.MES_设施的所有引用/访问,那么一切都会正常工作

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

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

http://knowledgebase.progress.com/articles/Article/000028868

变通办法 1.清洁全液 2.在不在VisualStudio中的资源管理器中搜索整个解决方案/项目文件夹,或使用Notepad++搜索ConcurrencyMode=Fixed并将其删除 3.重建解决方案 4.开心点

这对我很有用: