I have a Business Domain Object (BDO) class:
public class BDO_LIST_DEPARTMENTS
{
public int DEPARTMENT_ID { get; set; }
public string DEPARTMENT_NAME { get; set; }
}
And then I have a DataContract class:
[DataContract]
public class DC_LIST_DEPARTMENTS
{
[DataMember]
public int DEPARTMENT_ID { get; set; }
[DataMember]
public string DEPARTMENT_NAME { get; set; }
}
And in my service layer, I have tried to convert the BDO into a DataContract and then return a List of this DataContract, being the return type of the OperationContract:
[OperationContract]
IList<DC_LIST_DEPARTMENTS> GetAllDepartments();
Here was my original attempt in my service layer:
public IList<DC_LIST_DEPARTMENTS> GetAllDepartments()
{
DC_LIST_DEPARTMENTS DCDepartment = new DC_LIST_DEPARTMENTS();
IList<DC_LIST_DEPARTMENTS> DCListOfDepartments = new List<DC_LIST_DEPARTMENTS>();
ICollection<BDO_LIST_DEPARTMENTS> BDOListOfDepartments = Bal.GetAllDepartments();
foreach (BDO_LIST_DEPARTMENTS BDODepartment in BDOListOfDepartments)
{
DCDepartment.DEPARTMENT_ID = BDODepartment.DEPARTMENT_ID;
DCDepartment.DEPARTMENT_NAME = BDODepartment.DEPARTMENT_NAME;
DCListOfDepartments.Add(DCDepartment);
}
return DCListOfDepartments;
}
As you can see, I have attempted to add a single DataContract to a IList<DataContract>, but when I do so, it changes every other item of that list into the same DataContract with the same details.
Therefore, my question is, what is the correct return type for an OperationContract, how do I return a list of a DataContract class and how do I add to that list without changing the data of all other items in the list?
define a collection data contract
and use this collection data contract as return type of operation method.
and here is the modified implementation for service method: