zoukankan      html  css  js  c++  java
  • petapoco模板修改

    [Reference(ReferenceType.Many, ColumnName = "OneId", ReferenceMemberName = "OneId")]

    var user = Database.FetchOneToMany<UserDecoratedWithExtraInfoAsList>(
    x => x.ExtraUserInfo,
    x => x.UserId,
    "select u.*, e.* from users u left join extrauserinfos e on u.userid = e.userId where u.userid = 1").Single();

    [ResultColumn, Reference(ReferenceType.Many)]
    public List<ExtraUserInfoDecorated> ExtraUserInfo { get; set; }

    Right click .tt file and then "Debug T4 Template"

    https://stackoverflow.com/questions/41000524/visual-studio-serialization-error-when-t4-uses-dte-to-open-generated-file

    GetService改为GetCOMService

    IServiceProvider.GetService(typeof(DTE)) returns a Proxy Object. Proxy objects work by serializing data across app domains. You can confirm dte is a "transparent proxy" like this:

    bool isProxy = RemotingServices.IsTransparentProxy(dte);

    The EnvDTE assemblies are COM interop assemblies. Your error can be avoided by creating a Runtime Callable Wrapper, which can intelligently marshal calls to the COM object based off information in the interop-assembly. Microsoft has provided an extension method within theMicrosoft.VisualStudio.TextTemplating namespace:

    <#@ template hostspecific="true" language="C#" #>
    <#@ assembly name="EnvDTE" #>
    <#@ import namespace="Microsoft.VisualStudio.TextTemplating" #>
    <#
      IServiceProvider serviceProvider = (IServiceProvider)this.Host;
      EnvDTE.DTE dte = (EnvDTE.DTE) serviceProvider.GetCOMService(typeof(EnvDTE.DTE));
     #>

    The GetCOMService(this IServiceProvider, Type type) extension method is the correct way to obtain the dte COM object. I'm not aware of the absolute specifics, but the RCW alters how the method calls between your code and the COM object get serialized into a data stream.

    T4 templates run in a separate AppDomain, and I believe that is the reason your code is working despite the exception.

    https://blog.csdn.net/weixin_42930928/article/details/89513174

  • 相关阅读:
    Eclipse+Pydev +Django搭建开发环境时容易出错的几点
    小白对于数据库的初步理解
    个人PC搭建自己的虚拟服务器
    xss 学习(一)
    python爬虫学习(一)
    php常用函数
    sqlmap基础命令
    metinfo 5.3.19 管理员密码重置
    nmap常用命令
    Web安全开发手册
  • 原文地址:https://www.cnblogs.com/zwei1121/p/10245258.html
Copyright © 2011-2022 走看看