BTW, how should I reference this PK when I add records to the details? Should I save both ID and PK in public properties of the BL?
>I find it much more simplier to generate the GUID of the new record before calling the insert command:
public int InsertNewOrder(OrderDataSet.OrdersRow dr)
>{
> OrdersTableAdapter ta = new OrdersTableAdapter();
> dr.OrderPk = Guid.NewGuid();
>
> return (int)ta.InsertOrderRecord(dr.OrderPk, dr.OrderDate);
>}
Are you saying that you have two primary keys? A GUID and a ID? Why?
>
>Always put class that implement IDispose in a "using" block. You will be assured that the class will be disposed correcly.
>
>>I'm wondering if I'm on the right track and how should I modify my code.
>>
>>In the project I'm working with right now as a sample I see this code
>/// <summary>
>> /// Insert new order
>> /// returns the newly added key.
>> /// </summary>
>> /// <param name="dr">data row</param>
>> /// <returns>primary key of new record</returns>
>> public int InsertNewOrder(OrderDataSet.OrdersRow dr)
>> {
>> OrdersTableAdapter ta = new OrdersTableAdapter();
>>
>> return (int)ta.InsertOrderRecord(dr.OrderPk, dr.OrderDate);
>> }
>In my case the Orders table has PK as GUID (I want to allow simple merge), ID as Integer Identity and an OrderDate.
>>My method in TA is
>>SET @NewOrder = NewID();INSERT INTO [Orders] ([OrderPk], [OrderDate]) VALUES (@NewOrder, GetDate()); SET @NewOrderID = Scope_Identity() and both parameters are set to be Output parameters.
>>
>>So, the question is - how should I pass and how can I get them back in the BL?
>>
>>BTW, should I call in each method ta.Dispose() to clean up right away or should I switch to using here ?
If it's not broken, fix it until it is.
My Blog