我们使用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时,因为类是从模板构造而删除了。
你能建议什么是设置超时的正确位置,以便持久化吗?
答案 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