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