在数据库第一种方法中使用DbContext与Objectcontext定义数据注释

joh*_* Gu 3 entity-framework objectcontext asp.net-mvc-3 dbcontext

我使用与实体框架数据库的第一种方法,当我习惯使用的ObjectContext的数据库表被映射的默认模板工作,所以我用来创建#partial类&[MetadataType(typeof运算)以应用数据注解,,但是当我开始使用的DbContext代码生成模板来映射数据库表,我发现,它会在我的示范区创建.TT文件夹都被我发现,我可以直接申请数据注解到的.cs类本身,而不需要创建在objectcontext情况下的部分类.目前数据注释工作正常,但我的方法会导致我不知道的问题,我应该创建部分类,因为我曾经使用Objectcontext吗?BR

bri*_*lam 6

通常,您不应编辑生成的代码,因为您所做的更改将在重新生成时被覆盖.这就是大多数发生器发出部分类的原因.

对于您的情况,最佳做法是在解决方案中使用另一个部分类声明创建一个新文件.在该文件中,将MetadataType属性添加到类中,并将属性级验证属性添加到"伙伴"类(属性中引用的类).这允许您在生成的属性上使用验证属性,如果模型/数据库发生更改,您仍然可以重新生成模型类而不会丢失它们.

例如,您的新文件可能类似于:

[MetadataType(typeof(PersonMetadata))]
partial class Person
{
    // Add logic to the generated class in here.

    public string FullName
    {
        get { return FirstName + " " + LastName; }
    }
}

class PersonMetadata
{
    // Add attributes to the generated properties in here.

    [Required]
    public string FirstName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)