覆盖 RIA DomianService 代码生成

发布于 2024-12-10 12:56:48 字数 92 浏览 0 评论 0 原文

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

谢谢, 安库尔

I need to insert a common set of code in Get method of all the entities generated by the RIA Domain Service wizard. Is it possible to override Domain Service wizard's code generation so I can insert that code automatically?

Thanks,
Ankur

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

动听の歌 2024-12-17 12:56:48

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

WCF RIA 服务的 T4 代码生成器

使用T4改变RIA服务的工作方式

此外,您可以从CodePlex 上的 WCF RIA Services Contrib 项目,允许您修改 GET 方法,如下所示:

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

You can definitely modify and edit (or even write your own) T4 templates that are responsible for the code generation.. something along the lines of these two links:

T4 Code Generator for WCF RIA Services

Using T4 to change the way RIA services work

Furthermore, you can check the T4 template for RIA services (server side) from the WCF RIA Services Contrib project on CodePlex that allows you to modify your GET methods as follows:

public IQueryable<<#= Entity.Name #>> Get<#= Entity.Name #>()
{
     //Inject Custom code here
     return this.ObjectContext.<#= Entity.Mapping.StoreEntitySet #>;
}
眼趣 2024-12-17 12:56:48

还有一篇由 Stefan Cruysberghs 撰写的精彩博客文章,涵盖了该主题。

他正在使用 RIAServices.T4 nuget-package 来修改在客户端。引用的文章对此进行了非常详细的介绍,但本质如下:

  • 将 nuget-package 添加到包含服务的项目
  • 使用预定义的基类实现您自己的代码生成器

    公共类 MyDomainContextGenerator :CSharpDomainContextGenerator
    {
        protected override voidGenerateClassDeclaration()
        {
            // 在类生成之前添加一些内容...
            base.GenerateClassDeclaration();
        }
    }
    
  • 建议 RIAServices 通过属性类使用该生成器:

    [DomainServiceClientCodeGenerator("MyCodeGenerator", "C#")]
    公共类 MyCodeGenerator :CSharpClientCodeGenerator
    {
        受保护覆盖​​ DomainContextGenerator DomainContextGenerator
        {
            获取 { 返回新的 MyDomainContextGenerator(); }
        }
    }
    

There is also a great blog-post written by Stefan Cruysberghs covering this topic.

He is using the RIAServices.T4 nuget-package to modify the code that is being generated on the client side. The referenced article covers this in great detail, but the essence is as follows:

  • Add the nuget-package to the project containg the services
  • Implement your own code generator using a pre-defined base class

    public class MyDomainContextGenerator : CSharpDomainContextGenerator
    {
        protected override void GenerateClassDeclaration()
        {
            // Add something before the class generation here...
            base.GenerateClassDeclaration();
        }
    }
    
  • Advise RIAServices to use that generator by means of an attributed class:

    [DomainServiceClientCodeGenerator("MyCodeGenerator", "C#")]
    public class MyCodeGenerator : CSharpClientCodeGenerator
    {
        protected override DomainContextGenerator DomainContextGenerator
        {
            get { return new MyDomainContextGenerator(); }
        }
    }
    
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文