C# EF 5中的DataAnnotations不首先使用代码
我想知道EF5或更新版本中是否有一些关于数据注释的新功能。我先做数据库,所以据我所知,我必须一直操作T4,这是一个相当混乱的过程,因为每个EF版本MS都会更改默认的T4。那么,有人能告诉我,如果有其他选择,比如: 操纵T4:C# EF 5中的DataAnnotations不首先使用代码,c#,entity-framework,C#,Entity Framework,我想知道EF5或更新版本中是否有一些关于数据注释的新功能。我先做数据库,所以据我所知,我必须一直操作T4,这是一个相当混乱的过程,因为每个EF版本MS都会更改默认的T4。那么,有人能告诉我,如果有其他选择,比如: 操纵T4: <#=codeStringGenerator.UsingDirectives(inHeader: false, includeAnnotations: true)#> [MetadataType(typeof(<#=code.Escape(entity)#
<#=codeStringGenerator.UsingDirectives(inHeader: false, includeAnnotations: true)#>
[MetadataType(typeof(<#=code.Escape(entity)#>Metadata))]
<#=codeStringGenerator.EntityClassOpening(entity)#>
与生成的“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;
}
我今天就是这样做的。您不需要更改生成的代码。您可以将buddy类添加到部分类。然后,当代码重新生成时,您不会丢失任何东西。是的,但是我必须手动对数据库更新做出反应。因此,如果我使用“更新数据库…”,我必须转到分部类并将其同步到生成的分部类。我不明白你的意思。好的,当我在问题中的示例代码中实现我的类AddressMetadata时,一切正常。现在想象一下,我在数据库表中添加了一个新列“HouseNumber”。现在,当我更新EF模型时,我的AddressMetadata类将无法识别更改。对吗?我的问题是,我如何在不编辑T4的情况下自动化这些更改。@sprinter252-我想你对应该如何工作有些困惑。如果向数据库中添加新列,则无论如何都必须更新buddy类,因为VisualStudio无法神奇地找出需要对这些项进行什么验证。所以如果你修改数据库,你必须修改buddy类。我不知道。这就是我要求另一个显然不存在的解决方案的原因。在EF中有这么多功能强大的东西,另一方面却需要编辑T4(自动化)来实现国际化等简单的事情,这有点奇怪。不过还是谢谢你。
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;
}