2015-10-02 178 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