如何在AutoGenerated Edmx文件中设置实体框架CommandTimeout

时间:2016-04-01 16:03:39

标签: c# .net vb.net entity-framework visual-studio

我们使用EF6作为DB First,模型和edmx文件是使用.tt模板生成的。

现在我们需要设置一个相当直接的命令超时

Partial Public Class ReservingEntities
Inherits DbContext

Public Sub New()
    MyBase.New("name=ReservingEntities")
    Database.CommandTimeout = 0
End Sub

但问题是每当我们从数据库Database.CommandTimeout = 0更新我们的EF时,因为类是从模板构造而删除了。

你能建议什么是设置超时的正确位置,以便持久化吗?

1 个答案:

答案 0 :(得分:3)

您可以使用以下任一选项:

  • 您可以自定义当前项目的t4个模板。

  • 您还可以编辑实体框架的visual studio模板。然后,使用“添加新项目”窗口添加到项目中的每个edmx,选择ADO.NET实体数据模型,将使用修改后的模板。

自定义当前项目的实体框架模板

您可以修改.Context.tt文件下的.edmx模板,并在那里添加您的代码。

VB.NET中隐藏了.tt.tt个文件。要更改它们,请在解决方案资源管理器工具栏中单击“显示所有文件”以查看.edmx文件下的.Context.tt个文件。然后打开Partial <#=Accessibility.ForType(container)#> Class <#=code.Escape(container)#> Inherits DbContext Public Sub New() MyBase.New("name=<#=container.Name#>") 文件并在此块之后添加您的代码:

C#

.Context.tt中,文件未被隐藏,您可以打开<#=Accessibility.ForType(container)#> partial class <#=code.Escape(container)#> : DbContext { public <#=code.Escape(container)#>() : base("name=<#=container.Name#>") { 文件并将代码放在此块之后:

EF6

自定义Visual Studio使用的实体框架模板

您可以为实体框架自定义Visual Studio项模板。然后,使用“添加新项目”窗口添加到项目中的每个edmx,选择ADO.NET实体数据模型,将使用修改后的模板。

例如,对于C#语言和区域设置1033和CSharpDbContext.Context.tt,您可以编辑存储在以下路径中的\VisualStudioInstallationPath\Common7\IDE\ItemTemplates\CSharp\Data\1033\DbCtxCSEF6 文件:

category