如何从T4模板(tt)文件中检查标识列?

时间:2012-08-12 04:30:30

标签: entity-framework t4

如果 db列是主键而不是标识,我想在我的类属性中添加以下属性 考虑以下代码

[Key, Column(Order =  0), DatabaseGenerated (DatabaseGeneratedOption.None )]
public virtual int TypeId
{ get; set; }

我使用以下代码检查主键

bool isPrimaryKey = ef.IsKey(edmProperty);
#>
<#
if (isPrimaryKey)
{
#>
[Key]
<#
}
#>

现在我需要一些代码来检查列是标识吗?如果没有,那么我将添加 以下属性
来自我的T4模板代码的 DatabaseGenerated(DatabaseGeneratedOption.None)。 我使用EF 4.x POCO Entity Generator for C#来生成我的poco类。现在我想修改它。 现在我该怎么做? 等待你的帮助。

2 个答案:

答案 0 :(得分:0)

如果您对主键使用tblWidget和WidgetId的命名约定,那么您可以使用它来检测它是主键。

答案 1 :(得分:0)

public const string annotationNamespace = "http://schemas.microsoft.com/ado/2009/02/edm/annotation";

MetadataProperty storeGeneratedPatternProperty = null;
edmProperty.MetadataProperties.TryGetValue(annotationNamespace + ":StoreGeneratedPattern", false, out storeGeneratedPatternProperty);
bool IsIdentity = storeGeneratedPatternProperty != null && storeGeneratedPatternProperty.Value.ToString() == "Identity";