3

我正在做小型 Silverlight 应用程序,它允许用户创建订单。我创建了 Linq 2 SQL dbml 并将我的数据库表“Orders”和“OrderLines”拖到那里,它们之间存在关联。Order.ID ~ OrderLine.OrderID,然后我为我的表创建了 DomainService,我在其中启用了客户端访问,它为我生成了用于 Orders 和 OrderLines 的方法 Insert、Update、Delete、Get,现在我正在从我的 silverlight 应用程序,用户控件如下所示:

 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});
    }
}

和域服务方法:

 public void InsertOrder(Order order)
    {
        Context.Orders.InsertOnSubmit(order);
        Context.SubmitChanges();
    }

我在这里放了断点,线程到这里,一切正常。但之后在数据库中没有订单和订单线存在。并输出写道:“System.Data.Linq.dll 中发生了‘System.Data.SqlClient.SqlException’类型的第一次机会异常”

我能做些什么?请帮忙,谢谢。

4

1 回答 1

2

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

于 2009-10-28T11:29:06.457 回答