t4 - 在 POCO 模板 t4 生成器中查找属性是主键

标签 t4

我正在使用 VS 2012 附带的 POCO t4 模板生成器。我做了一些更改以包含 Entity.Name,但我无法找出主键。

public string EntityClassOpening(EntityType entity)
{
    return string.Format(
        CultureInfo.InvariantCulture,
        "{0} {1}partial class {2}{3}<{4},{5}>{6}",
        Accessibility.ForType(entity),
        _code.SpaceAfter(_code.AbstractOption(entity)),
        _code.Escape(entity),
        ": EntityBase",
        entity.Name,
        entity.Name,
        _code.StringBefore(" ", _typeMapper.GetTypeName(entity.BaseType)));
}

我找不到从 EntityType 对象层次结构中查找主键的方法。它公开了属性,但该属性没有任何说明它是主键。

任何帮助表示赞赏。

最佳答案

以防万一有人在迁移 RIA 服务时尝试这样做,我正在使用 VS2013 中的标准 dbcontext 模板,并在实体模板中添加了两件事。

首先你需要:

using System.ComponentModel.DataAnnotations;

我把它放在靠近顶部的//---- 块下面。

然后我修改了看起来像这样的代码。只需搜索名字即可。我的更改是 ef.IsKey... 并添加 Key() 属性。
    var simpleProperties = typeMapper.GetSimpleProperties(entity);
    if (simpleProperties.Any())
    {
        foreach (var edmProperty in simpleProperties)
        {
#>
 <#if (ef.IsKey(edmProperty))
   {#>      [Key()]
   <#}#>
    <#=codeStringGenerator.Property(edmProperty)#>
<#
        }
    }

关于t4 - 在 POCO 模板 t4 生成器中查找属性是主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14062694/

相关文章:

c# - 什么是构建从 C# Web 应用程序发送电子邮件的最佳方式?

asp.net-mvc - 为什么 MVC 脚手架会失败? (在 VS2012 和 VS2013 中有不同的错误)

visual-studio-2010 - 从TFS生成的文件的VS2010 T4自动 checkout 失败

asp.net - 找不到 MvcTextTemplateHost

visual-studio-2010 - VS2010 - 将 html 代码格式分配给 T4 (.tt) 文件

sitecore - 通过 TDS 生成代码时,Visual Studio 变量未转换

c# - 如何将 .net Reflection 与 T4 一起使用?

c# - 如何将 .cs 输出添加到项目中?

c# - 使用 t4 模板在运行时生成内存中的 SQL

visual-studio-2010 - 从其他 T4 模板运行 T4 模板