2012-05-29 49 views
1

我試着使用LINQ到SharePoint檢索和篩選一個簡單的列表與查找字段查找場LINQ有時SHAREPOINT犯規得到檢索

var list = _db.Leaves.Where(x =>x.Employee != null && x.Employee.Id == empId).ToList(); 

問題是有時隨機的現場員工爲空!我不知道爲什麼!它很奇怪,它隨機發生,導致拋出異常,任何人都知道爲什麼會發生這種情況?如果沒有分配給該字段的值

<Field Type="Lookup" DisplayName="Employee" Required="True" EnforceUniqueValues="FALSE" List="Lists/Employees" ShowField="EnFullName" ID="{26183411-9bbf-48a1-b2f8-3388b98c7fef}" Name="Employee" ColName="int2" RowOrdinal="0" Indexed="TRUE" RelationshipDeleteBehavior="Restrict" /> 
+0

爲什麼x.Employee爲空?似乎數據問題。您需要檢查葉子數據(在調試器或數據庫中)。爲什麼拋出異常,可能是因爲x爲空,或者x.Employee.Id爲空。共享堆棧跟蹤。用更多的信息和明確的意圖更新問題。 – Tilak

回答

0

員工將是無效的。

僅僅因爲它是必填字段並不意味着該字段將始終有一個值。 「必需」僅適用於Web表單的列表,它不是對實際數據庫本身的限制。例如,在代碼中,您可以創建/編輯一個對象,並將該字段設置爲null,即使它是必需的也不會有任何問題。如果您在上傳文檔時擁有文檔庫,則會創建列表項目,但不會填充任何字段;直到稍後對項目進行編輯,查找纔會變爲非空(即使只通過開箱即用的Web UI訪問)。還有其他的例子,但這個想法依然存在。在SharePoint中,您需要清空檢查必填字段。