C# PLS-00103:在预期以下情况之一时遇到符号“”:验证ForeignKey实体后LightSwitch出错
我再次遇到了visual studio lightswitch的问题。现在是关于自定义验证。我有一个实体,它的外键指向另一个实体: RouteItem包含FacilityItem的外键,如下所示: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
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.开心点 这对我很有用: