私はこれが古い質問であることを知っていますが、私が始めたときにこの情報に遭遇したかったでしょう。 私たちの多階層ソリューションでwin32 Delphiクライアントを使用している私の場合、私は.NETでDTOクラスを生成するためにテンプレート(C#で)を使い、win32で対応しています。
これは、私たちは、主に自動生成されたDelphiのコードを使用して、クライアント上のCRUD機能をカプセル化することができます:クライアントからの追跡
procedure Delete;
class function DeleteDto(const _dESPATCHID: integer) : boolean;
class function GetNextID : integer;
class function Get(const _dESPATCHID: integer) : TDtoDESPATCH; overload;
class function Collection(const __filterXml: string): TList<TDtoDESPATCH>;
function Load: boolean; overload;
function Populate(_primaryDict : TDictionary<string, Variant>) : boolean;
function Save : boolean; overload;
変更も自動化することができるので、各プロパティのセッターが変更されたプロパティをマークします変更されたプロパティのみが更新されるようにします。たとえば :サーバー側で
procedure TDtoDESPATCH.SetSCT_STATUS(const value : string);
begin
if (self.IsLoaded) and (inherited SCT_STATUS <> value) then
begin
TrackChange('SCT_STATUS');
self.Modified:= True;
end;
inherited SCT_STATUS := value;
end;
、別のテンプレートは、ASMX Webサービスとして公開されています自動生成されたWCFサービスのすべてのCRUD操作の世話をします。インタフェース、WCFメソッド、およびすべての注釈はテンプレートから生成されます。 WIN32が溶液の一部でなければならないシナリオで
// convert to entity
var _entity = _dto.ToEntity();
if(exists)
{
Global.LogActivity(string.Format("{0} - profile {1}, updating DESPATCH: {2}", racID, profile, _dto.ChangedProperties));
// Attach the entity to the db
db.DESPATCHes.Attach(_entity);
// Change tracking
ChangeTracking<DESPATCH>(_dto.ModifiedProperties, db, _entity);
}
、このすべてをコーディング手は(悪い)悪夢であろう。
「必須」か許可される文字列の長さはどのくらいですか? EntityTypeからですか? – ILovePaperTowels
いくつかのサンプルコードは私の編集を参照してください。 WritePrimitiveTypePropertyメソッドのEdmPropertyオブジェクトからIsNullableを読み取ります。また、文字列フィールドに最大長(上記のコードでHasMaxLengthとMaxLength)があるかどうかを判断するためのヘルパーメソッドをいくつか追加しています。 –
強盗と強姦のために謝罪しますが、あなたはどこでもオンラインで手渡すためのヘルパー機能を持っていませんか? :) –