我正在做一个小型Silverlight应用程序,它将允许用户创建订单。我创建了Linq 2 SQL dbml并在那里拖动了我的数据库表,“Orders”和“OrderLines”,它们之间存在关联。 Order.ID~OrderLine.OrderID,然后我为我的表创建了DomainService,在那里我启用了客户端访问,它为我生成了方法,插入,更新,删除,获取,订单和OrderLines,现在我正在创建新订单我的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});
}
}
和域名服务方法:
public void InsertOrder(Order order)
{
Context.Orders.InsertOnSubmit(order);
Context.SubmitChanges();
}
我已经把断点放在这里,线程来到这里,一切都很好。但之后在数据库中没有订单,也没有订单行。和输出写道:“在System.Data.Linq.dll中发生'System.Data.SqlClient.SqlException'类型的第一次机会异常”
我该怎么办? 请帮助,谢谢。
答案 0 :(得分:2)
您是从头开始创建OrderLines吗?如果是这样,你需要确保如果它们是新的,你正在为你要添加的每个OrderLine调用Context.OrderLines.InsertOnSubmit(orderLine),否则你会遇到这样的问题。此外,您应该在此处提供所有例外详情......