覆盖RIA DomianService代码生成

时间:2011-10-17 17:56:16

标签: ria t4 domain-service-class

我需要在RIA域服务向导生成的所有实体的Get方法中插入一组通用代码。是否可以覆盖域服务向导的代码生成,以便我可以自动插入该代码?

谢谢, ANKUR

2 个答案:

答案 0 :(得分:0)

您绝对可以修改和编辑(甚至编写自己的)负责代码生成的T4模板......这两个链接的内容如下:

T4 Code Generator for WCF RIA Services

Using T4 to change the way RIA services work

此外,您可以从WCF RIA Services Contrib project on CodePlex检查RIA服务(服务器端)的T4模板,该模板允许您修改GET方法,如下所示:

public IQueryable<<#= Entity.Name #>> Get<#= Entity.Name #>()
{
     //Inject Custom code here
     return this.ObjectContext.<#= Entity.Mapping.StoreEntitySet #>;
}

答案 1 :(得分:0)

Stefan Cruysberghs还写了一篇great blog-post来讨论这个话题。

他正在使用RIAServices.T4 nuget-package修改客户端生成的代码。引用的文章非常详细地介绍了这一点,但其实质如下:

  • 将nuget-package添加到包含服务的项目
  • 使用预定义的基类

    实现您自己的代码生成器
    public class MyDomainContextGenerator : CSharpDomainContextGenerator
    {
        protected override void GenerateClassDeclaration()
        {
            // Add something before the class generation here...
            base.GenerateClassDeclaration();
        }
    }
    
  • 建议RIAServices通过属性类使用该生成器:

    [DomainServiceClientCodeGenerator("MyCodeGenerator", "C#")]
    public class MyCodeGenerator : CSharpClientCodeGenerator
    {
        protected override DomainContextGenerator DomainContextGenerator
        {
            get { return new MyDomainContextGenerator(); }
        }
    }