Несколько проблем:
1) ваши контракты с данными неполны - вам необходимо в первую очередь украсить все классы, используемые в ваших методах обслуживания (для входных параметров и ! ) с [DataContract]
, и вы также должны украсить все элементы для сериализации с помощью [DataMember]
:
[DataContract]
public class inemployee
{
[DataMember]
public string EmployeeID { get; set; }
[DataMember]
public string EmployeeName { get; set; }
}
[DataContract]
public class outemployee
{
[DataMember]
public string EmployeeID { get; set; }
[DataMember]
public string EmployeeName { get; set; }
}
Кстати: почему у вас есть два отдельных типа - inemployee
и outemployee
?? Разве одного типа Employee
не хватит ??
2) Ваш уровень DAL должен включать лучшие практики: оберните ваши SqlConnection
и SqlCommand
в использование блоков; для вашего VARCHAR
параметра всегда задайте длину! и больше всего: если вы хотите вернуть List<outemployee>
, вам нужно создать список outemployee
, а не inemployee
!
И в завершение: вы получаете id
типа string
и пытаетесь добавить это string
к List<outemployee>
- это никогда не будет работать курс! Учитывая id
, вам нужно создать экземпляр outemployee
и добавить , который в список.
public List<outEmployee> InsertEmailTemplate(inEmployee InsertEmp)
{
using(SqlConnection con = new SqlConnection(connectionstring))
using(SqlCommand cmd = new SqlCommand("SP_InsertEmployee", con))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("employeename", SqlDbType.VarChar, 100).Value = InsertEmp.Employeename;
con.Open();
string id = (string)cmd.ExecuteScalar();
con.Close();
}
// you want to return outemployee -
// so you need to create an outemployee!
List<outemployee> oet = new List<outemployee>();
// create a new instance of an "outemployee"
outemployee emp = new outemployee();
// set the EmployeeID property of the "outemployee" to "id"
emp.EmployeeID = id;
// add new "outemployee" to list
oet.Add(emp);
return oet;
}