我再次遇到了visual studio lightswitch的問題。現在它關於自定義驗證。我有其中有一個外鍵引用其他實體的實體: PLS-00103:在期待以下某種情況時遇到符號「」:在驗證ForeignKey實體後LightSwitch中出現錯誤
RouteItem包含一個外鍵FacilityItem看起來像這樣:
我現在想做的事是驗證RouteItem中的ROUTENAME。我必須確保路由名稱不存在於選定的Facility中。
我的驗證代碼如下所示:
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
導致以下錯誤,如果電燈開關試圖保存/更新改變:
錯誤也會發生,如果我只寫在驗證實現acilityItem temp = this.MES_FACILITY;
。
如果我在驗證實現中刪除了所有參考/訪問this.MES_FACILITY
的內容,那麼所有參數都可以正常工作。
如果驗證是真或假,這也無關緊要。問題總是發生! PS:問題也會發生與其他實體和外鍵它不是一個所述RouteItem的問題 - FacilityItem組合