2011-12-06 6 views
1

LightSwitchで次のように苦労します。LightSwitchエンティティ:外部キープロパティの値を更新する

WorkEmailなどの分野のために今
partial void tblStaffExtendeds_Updating(tblStaffExtended entity) 
    { 

     string ldapPath = @"LDAP://DC=myLDAP,DC=myLDAP";    
     string user = entity.GPEmployeeID.ToString(); 
     string[] props = { 
          ActiveDirectoryInfo.strings.DISPLAYNAME, ActiveDirectoryInfo.strings.EMAIL, 
          ActiveDirectoryInfo.strings.LOGONALIAS, ActiveDirectoryInfo.strings.PHONE, 
          ActiveDirectoryInfo.strings.OFFICE, ActiveDirectoryInfo.strings.TITLE, 
          ActiveDirectoryInfo.strings.GPEMPLOYEEID 
          }; 

     var propResults = ActiveDirectoryInfo.UserPropertySearchByGPEmpID(user, ldapPath, props); 

     entity.tblAdminStaffType.StaffType = propResults[ActiveDirectoryInfo.strings.TITLE]; 
     entity.WorkEmail = propResults[ActiveDirectoryInfo.strings.EMAIL]; 
     entity.UserID = propResults[ActiveDirectoryInfo.strings.LOGONALIAS]; 
     entity.WorkPhone = propResults[ActiveDirectoryInfo.strings.PHONE]; 
    } 

:私はそうのように、partial void tblStaffExtendeds_Updating(tblStaffExtended entity)中に実体を「横取り」して、私たちの地元のldapからいくつかのデータを引き出し、特定の値にエンティティのプロパティのいずれかを設定しようとしていますWorkPhoneこれらのプロパティはちょうどstringsであり、それはLDAPから取得しているので、これは問題なく動作します。
しかし、私はStaffTypeを設定していますが、それは管理テーブルエントリへの参照ですか? LDAPはAdminテーブルの説明と一致するstringを返しますが、正しいIDに設定する必要があるエンティティを想定しています。

管理テーブルから「String」に「LDAP」の説明と照合してIDを見つけるために、「ルックアップ」メソッドを作成するのに間に合わないのですか? StaffTypes表はスタッフを保持していることを、私は、あなたのデータソースがapplicationDataに(LSのデフォルト名)と呼ばれていることを仮定している。この例では

string title = propResults[ActiveDirectoryInfo.strings.TITLE]; 

var qryAdminStaffType = from st in DataWorkspace.ApplicationData.StaffTypes 
         where st.Title == title 
         select st; 

entity.tblAdminStaffType.StaffType = qryAdminStaffType.FirstOrDefault(); 

答えて

1

ソリューションは、次のようになりますタイトル属性に一致していることを確認します。タイトルに一致するものがない場合、FirstOrDefalt()はnullを返すことに注意してください。

関連する問題