2014-03-13 24 views
0

我在DB像耐心表預約表 爲我創造了即病人,預約WCFREST服務2個數據合同2個表。數據合同中加入條件

我用List<Patient>填寫List對象的數據庫表信息和
List<Appointment>填寫列表obj中的數據庫表的信息也是如此。

在這裏,我有一個經營合同從2個表數據使用加入聲明

爲此,我應該如何存儲結果返回,因爲我有2個不同的對象? 我是否需要通過組合這兩個表的字段來創建另一個DataContract?

回答

0

使用實體框架工作(表格第一種或模型第一種方法)。但是,因爲您已經有可用的表格,您可能需要將模型放在表格上。無論你選擇你的最終數據合同應該如下方式:

[DataContract] 
public class Patient 
{ 
    [DataMember] 
    public int ID { get; set; } 
    [DataMember] 
    public string Name { get; set; } 
    [DataMember] 
    public List<Appointment> Appointments { get; set; } 
} 

[DataContract] 
public class Appointment 
{ 
    [DataMember] 
    public int ID { get; set; } 
    [DataMember] 
    public DateTime AppointmentTime { get; set; } 
    [DataMember] 
    public Address Venue { get; set; } 
} 

技巧是讓DataContract每個表的。您不必創建多個數據合同來滿足您的需求。 服務合同應如下:

[ServiceContract] 
public interface IPatientService 
{ 
    [OperationContract] 
    List<Patient> GetAllPatients(); 
} 

然後可以使用由EF結合延伸部設置在的DbContext(依賴注入),如下。或者,如果您不希望繼續使用構造函數並創建對象初始化,則只需刪除構造函數即可。這是一個示例。

public class PatientService : IPatientService 
{ 
    HospitalDbContext _context; 
    public PatientService(HospitalDbContext _context) 
    { 
     this._context = _context; 
    } 

    public List<Patient> GetAllPatients() 
    { 
     return (from patient in _context.Patients 
       select patient).ToList<Patient>(); 
    } 
} 

你可以自由地在這裏加入LINQ條件採取加盟等操作爲好。

0
[DataContract] 
class A 
{ 
    [DataMember] 
    public string PatientName { get; set; } 

    // more stuff. 
} 

[DataContract] 
class B 
{ 
    [DataMember] 
    public string HospitalName { get; set; } 

    // more stuff. 
} 

[DataContract] 
class C 
{ 
    [DataMember] 
    public A prop1 { get; set; } 

    [DataMember] 
    public B prop2 { get; set; } 

    // more stuff. 
}