0

我目前正在尝试在 Web 服务中创建一个新订单(如下所示),然后发送该数据以将新行插入数据库。出于某种原因,我的 DBML / 数据上下文不允许我使用 InsertOnSubmit。

有任何想法吗?我已经有大约 7 个月没有使用过 Linq to Sql 了。

提前致谢。

[WebMethod]
    public string InsertOrderToDatabases()
    {
        //Start Data Contexts ------
        DataContext db = new DataContext(System.Configuration.ConfigurationManager.AppSettings["RainbowCMSConnectionString"]);
        DataContext dcSqlOES = new DataContext(System.Configuration.ConfigurationManager.AppSettings["OESConnectionString"]);

        //Get table from local database
        Table<Schedule> Schedule = db.GetTable<Schedule>();

        //Find last order number in databases
        var lastOrderNumber = from lOrder in Schedule
                              orderby lOrder.templ_idn descending
                              select lOrder.templ_idn;

        int firstOrderID;
        var firstOrder = lastOrderNumber.FirstOrDefault();
        firstOrderID = firstOrder.Value + 1;

        qrOrder qrOrd = new qrOrder
        {
            .... data in here creating a new order

        };

        //TODO: fix below with an insert on submit
        if (qrOrd != null)
        {
        //    **Schedule.InsertOnSubmit(qrOrd);**
        }
        //db.GetTable<Schedule>().InsertOnSubmit(qrOrd);

        try
        {
            //Submit the changes to the database
            db.SubmitChanges();
            return "Orders were sent to the databases.";
        }
        catch ()
        {

        }
    }
4

3 回答 3

1

根据您的回复,您似乎使用了错误的表,或者可能是错误的数据类型。我还注意到,当您声明局部Schedule变量时,您将其声明为 type Table<Schedule>,这意味着它应该包含Schedule实体,而不是qrOrder实体。

Table<TEntity>.InsertOnSubmit期望传入一个特定的强类型实体。在您的情况下,它是期望Web_Service.Schedul‌e的,但您试图传入一个qrOrder.

于 2012-08-27T19:48:05.040 回答
0
 Schedule.InsertOnSubmit(qrOrd);

该行将不处理向连接实体提交更改,试试这个

    db.Schedule.InsertOnSubmit(qrOrd);
    db.SubmitChanges();
于 2012-08-27T19:45:21.013 回答
0

你可以试试

db.GetTable(typeof(Schedule)).InsertOnSubmit(qrOrd);

或者

 db.GetTable(qrOrd.GetType()).InsertOnSubmit(qrOrd);
于 2012-08-27T19:47:28.593 回答