Немного озадачен относительно того, что именно вы имеете в виду, но Linq и EntityFramework не имеют ничего общего с WCF, и парадигма их использования не меняется.Вы можете сделать что-то простое:
[ServiceContract]
public class MyService
{
[OperationContract]
public DataSet LoadData(string facilityCode)
{
command = new OracleCommand("H16.WEB_FACILITY.get_facility_info", connection);
command.CommandType = CommandType.StoredProcedure;
// Input Parameters
command.Parameters.Add("pfcode", OracleDbType.Varchar2, facilityCode, ParameterDirection.Input);
// Output Parameters
command.Parameters.Add("pfacility", OracleDbType.RefCursor).Direction = ParameterDirection.Output;
adapter = new OracleDataAdapter(command);
DataSet ds = new DataSet();
adapter.Fill(ds);
return ds;
}
}
На практике вы, вероятно, захотите использовать класс [DataContract]
и вернуть его вместо DataSet
, но единственное реальное изменение будетчитать ваши результаты в реальный класс вместо DataSet, что-то вроде:
[DataContract]
public class MyData
{
[DataMember]
public string Facility { get; set; }
}
Тогда ваш сервисный метод возвращает, что вместо DataSet:
[OperationContract]
public MyData LoadData(string facilityCode)
{
MyData data;
// read from Oracle into data object...
return data;
}
Вы также можетепосмотрите Поток транзакций WCF , чтобы управлять областью транзакций вашей базы данных.Это хороший способ сделать так, чтобы каждая операция службы WCF была захвачена в своей собственной области транзакции или даже при необходимости управляла транзакцией из клиента WCF.
[FaultContract]
s являются предметом самостоятельно, но вы можете найти несколько хороших примеров, если вы Google для этого.Обычно вы устанавливаете свой собственный тип исключения, а затем добавляете его в службу, например:
[ServiceContract]
[FaultContract(typeof(MyException))]
public class MyService
, и это говорит WCF добавить информацию о сериализации для MyException в WSDL, чтобы ваши операции могли throw new MyException();
и он будет сериализован обратно клиентам, чтобы они получили ваше исключение.