You must configure both the client application and the server bindings so that the transaction context flows from the client application to the service.
WCF provides several features that enable you to define the transactional characteristics of a service and control the way that client applications use that service.
Propagating transactions across a process or network boundary is not a trivial task.
For most applications, creating data contracts for the parameters or return values is all that is necessary. However, there are times when you must have complete control over the message.
For the WCF serializer to marshal a complex type, you must define a data contract for it. To do this, start by applying the DataContractAttribute attribute to the complex type definition that you want to pass in a message. Apply the DataMemberAttribute attribute to each field (either a data member or a property) that is to be serialized. All other data fields on the class are ignored.
How to Define an Operation Contract in WCF
Setting Aliases to Avoid Operation Overloading
How to get over the Operation Overloading Problem in WCF?
Service Contract Attributes
WCF provides attributes and properties that you can use when you design contracts to define the message-exchange patterns and the contents of the messages.
When you define a service contract and service implementation class, you must follow a few simple rules.
Service implementation classes: