Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EF 5中的DataAnnotations不首先使用代码_C#_Entity Framework - Fatal编程技术网

C# EF 5中的DataAnnotations不首先使用代码

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)#

我想知道EF5或更新版本中是否有一些关于数据注释的新功能。我先做数据库,所以据我所知,我必须一直操作T4,这是一个相当混乱的过程,因为每个EF版本MS都会更改默认的T4。那么,有人能告诉我,如果有其他选择,比如:

操纵T4:

<#=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;
}