Entity framework 4 自定义POCOs并在数据库刷新时不丢失更改的方法

Entity framework 4 自定义POCOs并在数据库刷新时不丢失更改的方法,entity-framework-4,entity-framework-4.1,Entity Framework 4,Entity Framework 4.1,在MVC3环境中使用EF4.1。我也在使用我用NUGET下载的POCO生成工具 我正在寻找一种方法,用属性“定制”POCO类以进行验证,而不会在每次数据库更改时丢失这些更改(并执行结果重新同步) 我尝试过创建抽象类和实例化继承的类,但EF强制我通过EDMX文件创建一个具体类,这个子类也会成为一个生成的POCO,它会随着每次数据库同步而“刷新” 我注意到POCO是分部类,这意味着我可以将成员添加到不同文件中的类中,但这种方法不允许我添加到现有成员中 虽然我知道我遇到的是数据库优先方法的局限性,但我

在MVC3环境中使用EF4.1。我也在使用我用NUGET下载的POCO生成工具

我正在寻找一种方法,用属性“定制”POCO类以进行验证,而不会在每次数据库更改时丢失这些更改(并执行结果重新同步)

我尝试过创建抽象类和实例化继承的类,但EF强制我通过EDMX文件创建一个具体类,这个子类也会成为一个生成的POCO,它会随着每次数据库同步而“刷新”

我注意到POCO是分部类,这意味着我可以将成员添加到不同文件中的类中,但这种方法不允许我添加到现有成员中


虽然我知道我遇到的是数据库优先方法的局限性,但我怀疑有一种方法可以改变/自定义POCO,使其在每次重新刷新时不会丢失。

您至少有两种选择:

  • 在分部类上实现接口并提供
    Validate
    方法
  • 正如Eranga提到的,使用
    MetadataType
    属性将验证属性移动到另一个类

  • 在ModelCreating上重写
    只对code first有效,而不是model/database first中的选项。

    您至少有两个选项:

  • 在分部类上实现接口并提供
    Validate
    方法
  • 正如Eranga提到的,使用
    MetadataType
    属性将验证属性移动到另一个类

  • 在ModelCreating上重写
    只对code first有效,而不是model/database first中的选项。

    请参见是,Eranga,这是完美的。将类绑定为绑定所有数据注释的“超级属性”。我不知道这是一个选择。你应该把它作为正式的回答。是的,Eranga,这太完美了。将类绑定为绑定所有数据注释的“超级属性”。我不知道这是一个选择。你应该把它作为一个正式的回答,我花了很多时间才得到元数据。在几个小时的碰壁之后,我意识到名称空间是不同的。这是一个可行的解决方案,但我希望MS能想出一个更好的方法。我花了很多时间才得到元数据。在几个小时的碰壁之后,我意识到名称空间是不同的。这是一个有效的解决方案,但我希望微软能想出一个更好的办法。