2012-11-17 115 views
0

我想知道是否有关于EF 5或更新版本中的数据注释的一些新功能。我做的是数据库优先,所以据我所知,我必须始终操纵T4,这很乱,因为每个EF-Version MS都会更改默认的T4。因此,有人可以告诉我,如果有一些替代这样的事情:EF 5中的数据注释无代码优先

操纵T4:

<#=codeStringGenerator.UsingDirectives(inHeader: false, includeAnnotations: true)#> 
[MetadataType(typeof(<#=code.Escape(entity)#>Metadata))] 
<#=codeStringGenerator.EntityClassOpening(entity)#> 

结果类样品,如果类被命名为“地址”:

[MetadataType(typeof(AddressMetadata))] 
public partial class Address 
{ 

其他类用于与生成的相同名称空间中的注释“地址”级别:

public class AddressMetadata 
{ 

    [Display(Name = "Straße")] 
    public string Street; 

    [Display(Name = "Land")] 
    public string Country; 

    [Display(Name = "PLZ")] 
    public string Zip; 

    [Display(Name = "Stadt")] 
    public string City; 
} 

这就是我今天就做。

回答

1

您不需要更改生成的代码。您可以将伙伴类添加到部分类。然后,当代码被重新生成时,你不会失去任何东西。

+0

是的,但后来我必须手动对数据库更新作出反应。所以,如果我使用“更新数据库...”,我必须去分部类并将其同步到生成的类。 – sprinter252

+0

我不明白你的意思。 –

+0

好的,当我在示例代码中实现我的类AddressMetadata时,问题一切正常。现在想象一下,我在数据库表中添加一个新的“HouseNumber”列。现在,当我更新EF模型时,我的AddressMetadata类将无法识别更改。对?我的问题是,我如何在不编辑T4的情况下自动执行这些更改。 – sprinter252