2009-10-28 29 views
3

我在做一個小的Silverlight應用程序,它將允許用戶創建訂單。我創建了Linq 2 SQL dbml,並在那裏拖動了我的數據庫表「訂單」和「訂單行」,它們之間存在關聯。 Order.ID〜OrderLine.OrderID,然後我爲我的表創建了DomainService,其中我啓用了客戶端訪問,它爲我生成了訂單和訂單行的方法,插入,更新,刪除,獲取,現在我正在創建新訂單我的Silverlight應用程序,用戶控件看起來是這樣的:Linq 2 SQL,插入具有關聯子對象的對象列表到數據庫中,Silverlight RIA

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

我已經把這裏突破點,而線程來這裏,一切都OK多內斯。但之後在數據庫中不存在任何訂單和訂單行。並輸出寫道:「在System.Data.Linq.dll中發生類型'System.Data.SqlClient.SqlException'的第一次機會異常」

我該怎麼辦? 請幫忙,謝謝。

回答

2

您是否從頭開始創建OrderLines?如果是這樣,你需要確保它們是新的,你爲每個你添加的OrderLine調用Context.OrderLines.InsertOnSubmit(orderLine),否則你會遇到這樣的問題。此外,你應該在這裏提供所有的例外細節...

+0

是的,我從頭開始創建,但我訂購的訂單將按順序添加到數據庫中。所以這意味着我必須手動添加命令行,從命令中分離出來? – 2009-10-28 11:37:25

+0

是的。原因是因爲linq 2 SQL不知道你的關係是關聯關係還是父子關係類型,所以它使你明確。當我剛開始使用框架時,這也讓我感到不安。這種想法很有意思... – 2009-10-28 12:36:26

相關問題