2015-10-02 91 views
0

我嘗試做與實體框架加入,但我需要列出我的信息加入我正常的方法是這樣後:實體框架加入

public DataTable LoadAllAllowing() 
{ 
    var resultList = new DataTable(); 
    SqlConnection connection = new SqlConnection(@"server=. ; database=PersonnelTrackingSystem;Trusted_Connection=yes"); 
    connection.Open(); 
    SqlDataAdapter da = new SqlDataAdapter(@"SELECT PA.personelId 
               ,[allowedDatesId] 
               ,[allowedStartDate] 
               ,[allowedEndDate] 
               ,[allowReason] 
               ,PI.personnelNumber 
               ,PI.personnelName 
               ,PI.personnelSurname 
               FROM [PersonnelTrackingSystem].[dbo].[personnelAllowedDates] AS PA 
               JOIN PersonnelInformation AS PI ON PI.personelId=PA.personelId", connection); 
    da.Fill(resultList); 
    return resultList; 
} 

我怎麼能與實體框架做到這一點?我不喜歡這一點,但它不工作

public List<PersonnelInfoAndAllow> LoadAllAllowing() 
    { 
     PersonnelTrackingSystemEntities entity = new PersonnelTrackingSystemEntities(); 
     //var personnel = entity.personnelAllowedDates.ToList(); 
     var allows = (from allow in entity.personnelAllowedDates join personnel in entity.PersonnelInformation on allow.personelId equals personnel.personelId select new { personelId = personnel.personelId, personnelNumber = personnel.personnelNumber, personnelName = personnel.personnelName, personnelSurname = personnel.personnelSurname, allowedDatesId = allow.allowedDatesId, allowedStartDate = allow.allowedStartDate, allowedEndDate = allow.allowedEndDate, allowReason = allow.allowReason }).ToList(); 
     List<PersonnelInfoAndAllow> personnels = allows; 
     return personnels;} 

我寫的類這樣的:

namespace personnelTrackingSystem { class PersonnelInfoAndAllow { public int personelId { get; set; } public System.DateTime allowedStartDate { get; set; } public System.DateTime allowedEndDate { get; set; } public string allowReason { get; set; } public int allowedDatesId { get; set; } public string personnelNumber { get; set; } public string personnelName { get; set; } public string personnelSurname { get; set; } } } 但它不工作。我如何解決這個問題?

回答

0

它應該是這個樣子:

from pa in db.personnelAllowedDates 
join pi in db.PersonnelInformation on pa.personelId equals pi.personelId 
select new AnObjectDefinedByYou 
{ 
    PersonelId = pa.personelId, 
    AllowedDatesId = pa.allowedDatesId, 
    //... 
    PersonnelNumber = pi.personnelNumber 
} 
+0

謝謝你,但我怎麼做我的方法是什麼?這個查詢必須是var,我的方法應該返回帶有這個變量的List。但是當我寫'List '時,它沒有PersonnelInformation信息。 – Mualla

+0

@Mualla - 你很親密。你應該定義一個新的類,比如'AnObjectDefinedByYou',它具有'personnelAllowedDates'和'PersonnelInformation'屬性;那麼你的方法應該返回一個'List '。 –

+0

好的。我會嘗試 。非常感謝 。 – Mualla