i have a strange thing here, i have a WCF service that has an operation contract defined like this

Code:
public bool SynchMenuItemsToCDB(IList<EcashMenuSynchModel> model)
        {
            con = new SqlConnection(strCon);

            cmdinsert = new SqlCommand("sp_Addmenuitems"); //needs to be created

            cmdinsert.CommandType = CommandType.StoredProcedure;

            cmdinsert.Connection = con;

            bool Error = false;
            
            try
            { 
                con.Open();

                foreach (EcashMenuSynchModel ecash in model)
                {
                    Error = false;
                    cmdinsert.Parameters.Add("@MENUITEMID", SqlDbType.Int).Value = ecash.MENUITEMID;
                    cmdinsert.Parameters.Add("@PDC_ID", SqlDbType.Int).Value = ecash.PDC_ID;
                    cmdinsert.Parameters.Add("@PRD_ID", SqlDbType.Int).Value = ecash.PRD_ID;
                    cmdinsert.Parameters.Add("@PDC_DESCRIPTION", SqlDbType.Int).Value = ecash.PDC_DESCRIPTION;
                    cmdinsert.Parameters.Add("@PRD_SELLINGPRICE", SqlDbType.Int).Value = ecash.PRD_SELLINGPRICE;
                    cmdinsert.Parameters.Add("@BREAKID", SqlDbType.Int).Value = ecash.BreakID;
                    cmdinsert.Parameters.Add("@CUTOFFDATE", SqlDbType.Int).Value = ecash.CUTOFFDATE;
                    cmdinsert.Parameters.Add("@SCHOOLID", SqlDbType.Int).Value = ecash.SCHOOLID;
                    cmdinsert.ExecuteNonQuery();
                }
            }
            catch (Exception ex)
            {
                Error = true;
                Logger.LoggerClient logger = new Logger.LoggerClient();
                //Collect Data
                Logger.LoggerModel modelS = new Logger.LoggerModel();
                modelS.iTYPEID = Convert.ToInt32(GenericEnum.Logging_Type.ECASH_SYCH);
                modelS.sLOGGER_CLASS = "eCashDatalayer";
                modelS.sLOGGER_DESCRIPTION = ex.Message;
                modelS.sLOGGER_FUNCTION = "SynchMenuItemsToCDB";
                modelS.sLOGGER_LOGGEDINUSERID = "";
                modelS.sLOGGER_PAGE = "NA";
                modelS.sLOGGER_VALUE = "NA";
                logger.LogIncident(modelS);
            }
            finally
            {
                con.Close();
            }

            return Error;
        }
as you can see this function accept "IList<EcashMenuSynchModel>" which is the Ilist of my model class

i have a WPF application that consumes this service. so i first prepare that list like this

Code:
 public IList<EcashMenuSynchModel> LoadMenuItems()
        {
            FirebirdSql.Data.FirebirdClient.FbConnection con = new FbConnection(strCon);

            FbCommand cmdselectFDB = new FbCommand();

            StringBuilder sb = new StringBuilder();

            sb.Append("SELECT M.MENUITEMID, M.PDC_ID, m.PRD_ID, M.PRD_SELLINGPRICE, P.PRD_DESCRIPTION, M.BREAKID, M.CUTOFFDATE, M.SCHOOLID ");
            sb.Append("From MENUITEMSECASH M ");
            sb.Append("INNER JOIN PRODUCT P ");
            sb.Append("ON m.PRD_ID = p.PRD_ID");

            cmdselectFDB.CommandText = sb.ToString();

            cmdselectFDB.Connection = con;

            FbDataAdapter da = new FbDataAdapter();

            da.SelectCommand = cmdselectFDB;

            DataTable dt = new DataTable();

            List<EcashMenuSynchModel> m_Break = null;
            try
            {
                con.Open();

                da.Fill(dt);

                if (dt.Rows.Count > 0)
                {

                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        EcashMenuSynchModel m = new EcashMenuSynchModel();
                        m.MENUITEMID = Convert.ToInt32(dt.Rows[i][0]);
                        m.PDC_ID = Convert.ToInt32(dt.Rows[i][1]);
                        m.PRD_ID = Convert.ToInt32(dt.Rows[i][2]);
                        m.PRD_SELLINGPRICE = Convert.ToDecimal(dt.Rows[i][3]);
                        m.PDC_DESCRIPTION= Convert.ToString(dt.Rows[i][4]);
                        m.BreakID = Convert.ToInt32(dt.Rows[i][5]);
                        m.CUTOFFDATE = Convert.ToDateTime(dt.Rows[i][6]);
                        m.SCHOOLID = Convert.ToInt32(dt.Rows[i][7]);
                        m_Break.Add(m);
                    }
                }

            }
            catch (Exception ex)
            {
                //log to a file
            }
            finally
            {
                con.Close();
            }
            return m_Break;
        }
and i use it like this


Code:
          IList<EcashMenuSynchModel> m_Transactions = null;

           
            m_Transactions = ecash.LoadMenuItems();

            bool Resultsfailer = DataLayerDirect.SynchMenuItemsToCDB(m_Transactions);
now i get a VS exception before i even compile this

Code:
Error	32	The best overloaded method match for 'Ecash_Money_Synch_Demo.DataLayer.IeCashDatalayerClient.SynchMenuItemsToCDB(System.Collections.Generic.List<Ecash_Money_Synch_Demo.DataLayer.EcashMenuSynchModel>)' has some invalid arguments	G:\AvantEdgeDevelopment\Ecash_NewLocation\Sync App\Ecash_Money_Synch_Demo\Ecash_Money_Synch_Demo\SynchMeals.xaml.cs	115	34	Ecash_Money_Synch_Demo
and this

Code:
Error	33	Argument 1: cannot convert from 'System.Collections.Generic.IList<Ecash_Money_Synch_Demo.DataLayer.EcashMenuSynchModel>' to 'System.Collections.Generic.List<Ecash_Money_Synch_Demo.DataLayer.EcashMenuSynchModel>'	G:\AvantEdgeDevelopment\Ecash_NewLocation\Sync App\Ecash_Money_Synch_Demo\Ecash_Money_Synch_Demo\SynchMeals.xaml.cs	115	70	Ecash_Money_Synch_Demo

I Followed the solution of this thread to overcome my problem, but still it does not help


http://forums.silverlight.net/forums/p/215142/509566.aspx