エンティティにCRUD機能を提供するWCF Rest APIを作成しています。学生です。ここでは、それが定義されている方法です。WCF REST APIレコードの一部更新
class Student
{
Guid Id;
string Name;
string LastName;
string Age;
DateTime DOB;
}
私のサービス契約は、このようなものです:
class StudentService
{
[WebInvoke(Method = "POST")]
public void Add(Student student)
{...}
[WebInvoke(Method = "PUT")]
public void Update(Student student)
{...}
[WebGet()]
public void Get(string Id)
{...}
}
今事は生徒の記録を更新している間、クライアントは完全なデータを提供しないことです。例えば、それはIdとDOBを提供しますが、名前とLastNameは提供しません。 IDは必須フィールドです。私はそのような場合に、何が最良のアプローチ/デザインになるのかを知る必要がありますか?
私はdbから既存のレコードをフェッチし、両方で比較を実行し、必要に応じて更新することができます。このアプローチの問題は、ユーザーが実際にフィールドをnullに更新するかどうかを知る方法がないことです。そして再び、比較はすっきりしたデザインではないようです。何か案は?
私はあなたのシステム設計で何かを見逃しているかもしれませんが、更新はクライアントがすでに働いている最近の学生記録を持っていることを意味します。 APIには、学生レコードを取得する「GET」メソッドが必要です。ユーザーは現在のレコードの情報を更新し、完全なレコードを返送します。したがって、ユーザーがDOBを変更しただけでも、現在のID、名前などが保持されます。何らかの変更追跡を実行していない限り、比較を行う必要はありません。 –
@KevinJunghans、はい私はGETメソッドも持っています。 (質問も更新されました)。しかし、私はサービスを消費しないので、アップデートする前にクライアントにGETを呼び出させることはできません。あなたが提供するフィールドだけを更新することで更新が機能するような機能です。 – Obaid