Entity framework 防止编译器停止撤消T4类实体框架中的更改

Entity framework 防止编译器停止撤消T4类实体框架中的更改,entity-framework,t4,Entity Framework,T4,我正在使用实体框架,希望在上下文类中做一些更改 例如,我正在为连接字符串再创建一个构造函数,但问题是每次打开.edmx文件并保存它时,我的更改就不再存在了 我有没有办法告诉.edmx不要撤消对上下文类或T4类的更改?您不能更改生成的代码。由于生成的类是分部类,因此可以向其中添加内容 将添加的内容添加到包含分部类的自定义部分的单独文件中 请参见此处:您无法更改生成的代码。由于生成的类是分部类,因此可以向其中添加内容 将添加的内容添加到包含分部类的自定义部分的单独文件中 请参见此处:另一种方法是自己

我正在使用实体框架,希望在上下文类中做一些更改

例如,我正在为连接字符串再创建一个构造函数,但问题是每次打开
.edmx
文件并保存它时,我的更改就不再存在了


我有没有办法告诉
.edmx
不要撤消对上下文类或T4类的更改?

您不能更改生成的代码。由于生成的类是分部类,因此可以向其中添加内容

将添加的内容添加到包含分部类的自定义部分的单独文件中


请参见此处:

您无法更改生成的代码。由于生成的类是分部类,因此可以向其中添加内容

将添加的内容添加到包含分部类的自定义部分的单独文件中


请参见此处:

另一种方法是自己修改T4模板,并将您的特定需求始终应用于生成的类。 例如,当您希望在每个类上将INotifyPropertyChanged作为接口时,通常会这样做。 这种方法只有在您的更改本质上是通用的情况下才有效。如果您只想在一个类中进行特定更改,则此解决方案不适用于您

另一种选择是首先使用代码来完全控制类。 可以使用特殊属性标记方法和属性,以将它们映射到数据库。还有一个反向工程选项,可以从现有数据库创建这些类。您可以进行一次反向工程,然后控制类并根据需要调整它们

我现在通常采用最后一种方法,因为它不使用分部类,属于某个类的所有代码都在同一个文件中


Maarten的答案也不错,但还有两种选择。

另一种选择是自己修改T4模板,并将您的特定需求始终应用于生成的类。 例如,当您希望在每个类上将INotifyPropertyChanged作为接口时,通常会这样做。 这种方法只有在您的更改本质上是通用的情况下才有效。如果您只想在一个类中进行特定更改,则此解决方案不适用于您

另一种选择是首先使用代码来完全控制类。 可以使用特殊属性标记方法和属性,以将它们映射到数据库。还有一个反向工程选项,可以从现有数据库创建这些类。您可以进行一次反向工程,然后控制类并根据需要调整它们

我现在通常采用最后一种方法,因为它不使用分部类,属于某个类的所有代码都在同一个文件中


马丁的答案也不错,但还有两个选择。

非常感谢。这很有帮助。非常感谢。这很有帮助。