which design is better for a client/server project with lots of data sharing
Let's say we have a project that will handle lots of data (employees, schedules, calendars....and lots more). Client is Windows App, Server side is WCF. Database is MS SQL Server. I am confused regarding which approach to use. I read few articles and blogs they all seem nice but I am confused. I don't want to start with one approach and then regret not choosing the other. The project will have around 30-35 different object types. A lot of Data retrieving to populate different reports...etc

**Approach 1:**

    // classes that hold data

    public class Employee
    {
        public int Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        .....
    }

    public class Assignment
    {
        public int Id { get; set; }
        public int UserId { get; set; }
        public DateTime Date { get; set; }
        .....
    }
    .....

Then Helper classes to deal with data saving and retrieving:

    public static class Employees
    {
        public static int Save(Employee emp)
        {
            // save the employee
        }

        public static Employee Get(int empId)
        {
            // return the ugly employee
        }
        .....
    }

    public static class Assignments
    {
        public static int Save(Assignment ass)
        {
            // save the Assignment
        }
        .....
    }

FYI, The object classes like Employees and Assignment will be in a separate Assembly to be shared between Sever and Client.
Anyway, with this approach I will have a cleaner objects. The Helper classes will do most of the job.  

**Approach 2:**

    // classes that hold data and methods for saving and retrieving

    public class Employee
    {
        // constructors
        public Employee()
        {
            // Construct a new Employee
        }
        public Employee(int Id)
        {
            // Construct a new Employee and fills the data from db
        }

         public int Id { get; set; }
         public string FirstName { get; set; }
         public string LastName { get; set; }
        .....

        public int Save()
        {
            // save the Employee
        }
        .....
    }

    public class Assignment
    {
        // constructors
        public Assignment()
        {
            // Construct a new assignment
        }
        public Assignment(int Id)
        {
            // Construct a new assignment and fills the data from db
        }

        public int Id { get; set; }
        public int UserId { get; set; }
        public DateTime Date { get; set; }
        .....

        public int Save()
        {
            // save the Assignment
        }
        .....
    }
    .....

With this approach, Each object will do its own job.. Data still can be transferred from WCF to client easily since WCF will only share properties. 

**Approach 3:**

Using Entity Framework.. beside the fact that I never worked with it (which is nice since I have to learn something new) I will need to create POCOs to transfer data between client and WCF.. 

Now, Which is better? more options? 
which design is better for a client/server project with lots of data sharing
===

Let's say we have a project that will handle lots of data (employees, schedules, calendars....and lots more). Client is Windows App, Server side is WCF. Database is MS SQL Server. I am confused regarding which approach to use. I read few articles and blogs they all seem nice but I am confused. I don't want to start with one approach and then regret not choosing the other. The project will have around 30-35 different object types. A lot of Data retrieving to populate different reports...etc

**Approach 1:**

    // classes that hold data

    public class Employee
    {
        public int Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        .....
    }

    public class Assignment
    {
        public int Id { get; set; }
        public int UserId { get; set; }
        public DateTime Date { get; set; }
        .....
    }
    .....

Then Helper classes to deal with data saving and retrieving:

    public static class Employees
    {
        public static int Save(Employee emp)
        {
            // save the employee
        }

        public static Employee Get(int empId)
        {
            // return the ugly employee
        }
        .....
    }

    public static class Assignments
    {
        public static int Save(Assignment ass)
        {
            // save the Assignment
        }
        .....
    }

FYI, The object classes like Employees and Assignment will be in a separate Assembly to be shared between Sever and Client.
Anyway, with this approach I will have a cleaner objects. The Helper classes will do most of the job.  

**Approach 2:**

    // classes that hold data and methods for saving and retrieving

    public class Employee
    {
        // constructors
        public Employee()
        {
            // Construct a new Employee
        }
        public Employee(int Id)
        {
            // Construct a new Employee and fills the data from db
        }

         public int Id { get; set; }
         public string FirstName { get; set; }
         public string LastName { get; set; }
        .....

        public int Save()
        {
            // save the Employee
        }
        .....
    }

    public class Assignment
    {
        // constructors
        public Assignment()
        {
            // Construct a new assignment
        }
        public Assignment(int Id)
        {
            // Construct a new assignment and fills the data from db
        }

        public int Id { get; set; }
        public int UserId { get; set; }
        public DateTime Date { get; set; }
        .....

        public int Save()
        {
            // save the Assignment
        }
        .....
    }
    .....

With this approach, Each object will do its own job.. Data still can be transferred from WCF to client easily since WCF will only share properties. 

**Approach 3:**

Using Entity Framework.. beside the fact that I never worked with it (which is nice since I have to learn something new) I will need to create POCOs to transfer data between client and WCF.. 

Now, Which is better? more options? 