我在做一個小的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'的第一次機會異常」
我該怎麼辦? 請幫忙,謝謝。
是的,我從頭開始創建,但我訂購的訂單將按順序添加到數據庫中。所以這意味着我必須手動添加命令行,從命令中分離出來? – 2009-10-28 11:37:25
是的。原因是因爲linq 2 SQL不知道你的關係是關聯關係還是父子關係類型,所以它使你明確。當我剛開始使用框架時,這也讓我感到不安。這種想法很有意思... – 2009-10-28 12:36:26