在Entity Framework中更新模型会删除超时

时间:2016-04-29 18:03:14

标签: c# entity-framework model-view-controller

在我的数据库模型中( voronoi.clipExtent([[0, -10], [width+10, height]]); voronoiGroup.selectAll("path").remove(); voronoiGroup.selectAll("cells") .data(voronoi(vd)) .enter() .append("path") .attr("class", "cells") .attr("d", function(d) { return "M" + d.join("L") + "Z"; }) .datum(function(d) { return d.point; }) .attr("stroke", "red") .on("mouseover", mouseover) .on("mouseout", mouseout); 文件 - > .edmx - > mySource.Context.tt)我已将超时设置为某个值,但是当我更新模型时(从数据库更新) )它会删除我的mySource.Context.cs条目,因为此文件会自动填充。

每次更新我的实体模型时,是否有一种方法可以将上述超时代码放回去?

我考虑在删除此代码时创建单元测试失败,但我宁愿更积极主动并防止其发生。

((IObjectContextAdapter)this).ObjectContext.CommandTimeout = 300;

3 个答案:

答案 0 :(得分:1)

您可以更新模板mySource.Context.tt以在构造函数中包含此行。当您运行更新时,它基本上运行t4template以生成mySource.Context.cs文件。

以下是可帮助您确定要更新的部分的代码段。打开mySource.Context.tt。查看下面的代码段并添加代码行以确切超出我放在下面代码段的位置。

<#=Accessibility.ForType(container)#> partial class <#=code.Escape(container)#> : DbContext
{
    public <#=code.Escape(container)#>()
        : base("name=<#=container.Name#>")
    {
       // Timeout setting
       ((IObjectContextAdapter)this).ObjectContext.CommandTimeout = 300; 
<#
if (!loader.IsLazyLoadingEnabled(container))
{

答案 1 :(得分:1)

.Context.cs包含部​​分类。创建一个文件并从.Context.cs复制这些行(名称可能不同):

namespace Whatever
public partial class myEntities : DbContext
{
}

然后只需添加该行即可设置超时。您的文件不会被覆盖:

    public partial class myEntities : DbContext
    {
        ((IObjectContextAdapter)this).ObjectContext.CommandTimeout = 300;
    }

答案 2 :(得分:0)

您可以在连接字符串中配置命令timeout;只需添加&#34; ....; CommandTimeout = 300; ...&#34;到连接字符串。我不一定要在EF中进行硬编码。