如何基于 WCF 数据服务创建 POCO 类
How to create POCO classes based on a WCF Data Service
我有一个可使用的 WCF 数据服务(假设我无法访问其源代码)。
我需要 POCO 类, 代表数据服务提供的相同 类。
这是一个例子。
服务:
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;
}
客户:
//should be generated
public class Info
{
public int ID {get; set}
public string Data {get; set}
}
我只能访问服务 URI。
显然我可以使用内置的代理生成器工具 (datasvcutil.exe
),但它会生成很多我不需要的代码。
喜欢上下文:
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;
}
}
或者满是注解和方法的类:
[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;
}
我要的就是纯POCO类.
有没有好的方法可以根据数据服务生成那些类?
WCF 服务生成数据协定的概念。所以我认为您将拥有所需的所有信息。如果您仍想生成 类,请尝试使用 Reflection 和 CodeDom。
https://msdn.microsoft.com/en-gb/library/saf5ce06(v=vs.110).aspx
由于我找不到任何合适的解决方案,我创建了一个库来创建基于 WCF 数据服务元数据的必要 POCO 类。
它是开源的,你可以在这里得到它:https://github.com/nestorium/DS2POCO
希望你会觉得有用:)
我有一个可使用的 WCF 数据服务(假设我无法访问其源代码)。
我需要 POCO 类, 代表数据服务提供的相同 类。
这是一个例子。
服务:
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;
}
客户:
//should be generated
public class Info
{
public int ID {get; set}
public string Data {get; set}
}
我只能访问服务 URI。
显然我可以使用内置的代理生成器工具 (datasvcutil.exe
),但它会生成很多我不需要的代码。
喜欢上下文:
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;
}
}
或者满是注解和方法的类:
[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;
}
我要的就是纯POCO类.
有没有好的方法可以根据数据服务生成那些类?
WCF 服务生成数据协定的概念。所以我认为您将拥有所需的所有信息。如果您仍想生成 类,请尝试使用 Reflection 和 CodeDom。 https://msdn.microsoft.com/en-gb/library/saf5ce06(v=vs.110).aspx
由于我找不到任何合适的解决方案,我创建了一个库来创建基于 WCF 数据服务元数据的必要 POCO 类。
它是开源的,你可以在这里得到它:https://github.com/nestorium/DS2POCO
希望你会觉得有用:)