Ich habe einen konsumierbaren WCF-Datenservice (angenommen, ich kann nicht auf seinen Quellcode zugreifen).Erstellen von POCO-Klassen basierend auf einem WCF-Datenservice
Ich brauche POCO-Klassen, die die gleichen Klassen darstellen, die vom Datendienst bereitgestellt werden.
Hier ist ein Beispiel.
Service:
public class Info
{
public int ID {get; set}
public string Data {get; set}
}
public IQueryable<Info> GetInfo()
{
return from info in context.Info
select info;
}
Auftraggeber:
//should be generated
public class Info
{
public int ID {get; set}
public string Data {get; set}
}
Alles, was ich zugreifen kann, ist der Dienst-URI.
Offensichtlich Ich könnte das integrierte Proxy-Generator-Tool (datasvcutil.exe
) verwenden, aber es erzeugt eine Menge Code, den ich nicht benötige.
Wie der Kontext:
public partial class MyEntities : global::System.Data.Services.Client.DataServiceContext
{
/// <summary>
///
/// </summary>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Services.Design", "1.0.0")]
public MyEntities(global::System.Uri serviceRoot) :
base(serviceRoot)
{
this.OnContextCreated();
}
partial void OnContextCreated();
/// <summary>
///
/// </summary>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Services.Design", "1.0.0")]
public global::System.Data.Services.Client.DataServiceQuery<Info> Info
{
get
{
if ((this.Info == null))
{
this._Info = base.CreateQuery<Info>("Info");
}
return this._Info;
}
}
Oder die Klassen, die voll von Anmerkungen und Methoden sind:
[global::System.Data.Services.Common.DataServiceKeyAttribute("ID")]
public partial class Info
{
/// <summary>
///
/// </summary>
/// <param name="ID"></param>
/// <param name="Data"></param>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Services.Design", "1.0.0")]
public static Info CreateInfo(int id, string data)
{
Info info = new Info();
info.ID = id;
info.Data = data;
return info;
}
Alles, was ich will, ist die reine POCO-Klassen.
Gibt es einen guten Ansatz, diese Klassen basierend auf dem Datendienst zu generieren?
A WCF finden einen Datenvertrag vorsieht. Ein Datendienst (wie es ein einfacher REST-Dienst ist) jedoch nicht. Entweder "reinige" ich die generierten Proxy-Klassen basierend auf den Metadaten, oder ich generiere meine eigenen Klassen. – Nestor