如何自定义实体框架类?

时间:2020-03-05 18:46:24  来源:igfitidea点击:

有没有办法接管Entity Framework类构建器?我希望能够拥有自己的类构建器,以便可以实现一些属性以在实现时调用其他方法,或者使实体类成为局部类。

解决方案

回答

实际上,它们已经在局部类中。参见MSDN

回答

我要补充一点,我们不仅可以将自己的类局部类添加到Entity Framework发出的那些局部类中,而且还可以写出由生成的代码创建的所有局部方法。

IE。会有很多部分方法代码被调用,但是生成的代码中的方法本身并未真正实现。为此,我们可以编写一个局部方法来在属性发生更改等时捕获事件。这不是处理某些业务规则的糟糕方法。

回答

System.Data.Entity.Design.EntityClassGenerator,是VS中用于从.edmx文件生成对象层的类型,并且是EdmGen.exe用于从.csdl文件生成对象层的类型。下面,我列出了影响生成代码的3种方法。第三个选项要求我们自己调用EntityClassGenerator。通过使用Sanjay提出的这种技术,可以使代码在VS中像SingleFileGenerator一样自动运行。

  • 通过部分类将代码添加到类型中
  • 将代码添加到生成的类所调用的部分方法中
  • 挂钩代码生成事件,以在生成代码时将代码直接注入到属性和类型中。有关示例,请参见Danny的博客文章。