我正在使用 Simple Odata Client 在 WPF 应用程序中执行 CRUD 操作。
我有一个父实体和一个子实体:
public class Order
{
public int OrderId{get;set;}
public int Description{get;set;}
public ObservableCollection<OrderLine> OrderLines {get;set;}
}
public class OrderLine
{
public int OrderId{get;set;}
public int OrderLineId{get;set;}
public int ItenId{get;set;}
public int ItemDescription{get;set;}
public virtual Order Order {get;set;}
}
我有一个执行 crud 操作的类:
public class ManageOrders
{
//Implements INotifyPropertyChanged
Public Order Order;
public void Get()
{
this.Order = packages = await client
.For<Order>()
.ByKey(1001).
.Expand(x.OrderLines).
.FindEntriesAsync();
}
public void Save()
{
if("NEW")
{
// Add new item and save
}
if("MODIFIED")
{
// save modified item
}
}
public void Delete()
{
//Delete
}
}
我将父实体属性绑定到标题控件。
TextBox.Text = Order.Description;
和子实体到 DataGrid。
DataGrid.ItemSource = Order.OrderLines;
当我单击 GET 按钮时,将从 DB 中获取订单。然后我更改 Order 和 OrderLines 中的数据。然后我删除一个 OrderLine 并添加两个新的 OrderLine。
在我使用ObservarbleCollection
时,更改将自动从 UI 添加到 Source。
要求
当我单击“保存”按钮时,所有更改都应提交到服务器。(批量请求是首选)。
问题
如何通过 PATCH 请求仅将更改的实体发送到服务器,而不在标题和行中发送未修改的属性?