Linq to sql Linq 2 SQL,将具有关联子对象列表的对象插入数据库,Silverlight RIA

Linq to sql Linq 2 SQL,将具有关联子对象列表的对象插入数据库,Silverlight RIA,linq-to-sql,silverlight-3.0,wcf-ria-services,Linq To Sql,Silverlight 3.0,Wcf Ria Services,我正在做一个小的Silverlight应用程序,它允许用户创建订单。我已经创建了Linq2SQLDBML,并将我的数据库表“Orders”和“OrderLines”拖到那里,它们之间存在关联。Order.ID~OrderLine.OrderID,然后我为我的表创建了DomainService,在这里我启用了客户端访问,它为我生成了订单和订单行的方法Insert、Update、Delete、Get,现在我从silverlight应用程序创建新订单,usercontrol如下所示: public

我正在做一个小的Silverlight应用程序,它允许用户创建订单。我已经创建了Linq2SQLDBML,并将我的数据库表“Orders”和“OrderLines”拖到那里,它们之间存在关联。Order.ID~OrderLine.OrderID,然后我为我的表创建了DomainService,在这里我启用了客户端访问,它为我生成了订单和订单行的方法Insert、Update、Delete、Get,现在我从silverlight应用程序创建新订单,usercontrol如下所示:

 public partial class NewOrderView : UserControl
{
    public ObservableCollection<OrderLine> OrderLines { get; set; }
    public NewOrderView()
    {
        InitializeComponent();
        OrderLines = new ObservableCollection<OrderLine>();
        dataGrid.ItemsSource = OrderLines;
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        var order = new Order();
        foreach (var orderLine in OrderLines)
        {
            order.OrderLines.Add(orderLine);
        }
        order.CompanyId = int.Parse(StaticContainer.CurrentUser.CompanyId.ToString());
        order.CreationDate = DateTime.Now;
        order.Status = "შეკვეთილი";
        order.Id = 1;
        var ctx = new EntreeDomainContext();
        ctx.Orders.Add(order);
        ctx.SubmitChanges();
    }

    private void Button_Click_1(object sender, RoutedEventArgs e)
    {
        StaticContainer.Navigation.Back();
    }

    private void Button_Click_2(object sender, RoutedEventArgs e)
    {
        StaticContainer.Navigation.LogOut();
    }

    private void AddProduct(object sender, ProductAdditionEventHandlerArgs args)
    {
        var result = OrderLines.Where(x => x.Item.itmKEY == args.Product.itmKEY).FirstOrDefault();
        if(result==null)
        OrderLines.Add(new OrderLine(){Item = args.Product});
    }
}
我把断点放在这里,线到了这里,一切正常。但在此之后,数据库中不存在订单和订单行。输出写到:“System.Data.Linq.dll中发生了类型为'System.Data.SqlClient.SqlException'的第一次意外异常”

我能做什么?
请提供帮助,谢谢。

您是否从头开始创建订单行?如果是这样的话,您需要确保如果它们是新的,那么您正在为添加的每个订单行调用Context.OrderLines.InsertOnSubmit(订单行),否则您将遇到类似这样的问题。此外,您应该在此处提供所有异常详细信息…

是的,我从头开始创建,但我认为订单行将随订单一起添加到数据库中。这意味着我必须手动添加订单行,与订单分开?是的。原因是因为linq 2 SQL不知道您的关系是关联关系还是父子关系类型,所以它使您变得明确。当我第一次开始使用这个框架时,这也让我感到震惊。你想起来有点道理。。。
 public void InsertOrder(Order order)
    {
        Context.Orders.InsertOnSubmit(order);
        Context.SubmitChanges();
    }