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.SqlClient.SqlException' の最初のチャンス例外が System.Data.Linq.dll で発生しました」

私に何ができる?助けてください、そしてありがとう。

4

1 に答える 1

2

OrderLinesを最初から作成していますか?その場合、それらが新しい場合は、追加するOrderLineごとにContext.OrderLines.InsertOnSubmit(orderLine)を呼び出していることを確認する必要があります。そうしないと、このような問題が発生します。また、ここですべての例外の詳細を提供する必要があります...

于 2009-10-28T11:29:06.457 に答える