实体的框架MySQL-超时已过期,同时生成模型
-
19-09-2019 - |
题
我已经建造了一个数据库在MySQL和我在尝试图与实体框架,但是我开始运行到"GenerateSSDLException"s每当我试图添加更多于约20表的EF的上下文。
一个例外的类型 'Microsoft.Data.Entity.Design.VisualStudio.ModelWizard.Engine.ModelBuilderEngine+GenerateSSDLException' 发生在尝试更新 从数据库。异常 消息是:'时,出现了一个错误 执行命令的定义。看看 内部异常详细信息。'
致命错误的过程中遇到的命令的执行。
超时过期。超时期完成之前已在运作或服务器没有反应。
没有什么特别的影响表,它从未在同一表格(s),它只是经过一定(非特异性)的表格数量已经增加,上下文可以不再更新没有"超时已过期"的错误。有时候这是唯一一个表,和有时是三个;结果是相当难以预测。此外,差异数量的表格,它可能加入之前的错误表示我或许问题在于大小的查询正在产生的更新方面,其中包括现有表格的定义,并且还有新的表格,正在加入它。基本上,SQL query是变得太大,这是无法执行的一些原因。
如果我生成模型 EdmGen2 它的工作没有任何错误,但所产生的EDMX文件无法更新内Visual Studio没有产生上述例外。
在所有可能的来源这个问题在该工具的内Visual Studio鉴于EdmGen2工作得很好,但我希望,或许别人可以提供一些建议如何处理这个非常独特的问题,因为它似乎喜欢 我不是唯一的人在经历它.
一个建议一个同事提供的是维护两个独立的EBMX文件的一些表格的交叉,但是,这似乎是一个非常丑陋的修复在我的意见。我想这就是我试图使用"新技术"。:(
解决方案
我只是在整个下午这个问题头疼。然而,我发现,你可以在App.config中或在您的EF desinger连接存在的web.config中添加一条语句解“默认命令超时= 300000;”。问题走了。
其他提示
在以上的建议是不正确的。
Default Command Timeout
是需要改变的唯一连接字符串参数。 Connect Time
只是调整的时间去等待摆在首位的连接量;这是不是你的问题。
Default Command Timeout
似乎具有与连接器/净6.3.4连接字符串中没有任何影响。我认为这是在连接器/网络中的错误,我提交了 bug报告与Oracle。 修改:此错误由MySQL开发承认和已被固定为10/13/2010。修复放入6.0.8,6.1.6,6.2.5,6.3.5和强>
我解决这个得到的唯一途径就是我ObjectContext
对象的CommandTimeout
属性更改为null以外的东西。如果是空,它应该在每MSDN中的“基础提供”使用的值。如果不为空,这是秒数权威值的超时之前。
例如:
var context = new CitationData.de_rawEntities();
context.CommandTimeout = 180;
退房:
HTTP:// efvote。 wufoo.com/forms/ado-net-entity-framework-vote-of-no-confidence/
哎呀,只是意识到这种联系已经发布!遗憾
我也认真考虑“一个建议一个同事提供的是保持与一些表交叉两个独立EBMX文件”
这可能是丑陋,但它应该工作!
你们是软弱的没有说明如何解决这个问题很容易:
- 删除所有你的数据连接
- 下载最新的连接器MySql(6.3.x)
- 打开Visual Studio>切断资源管理器>正确的点击"数据连接">增加连接
- 选择供应商数据库
- 输入的连接细节
- 点击"提前"
- 找连接时间,并使它东西一样30,000
- 找到默认的命令超时,使它的东西喜欢30,000
保存的一切,然后再尝试和更新你的EF模型。我测试这EF4.0和Vs2010所以我知道它的工作。
我尝试了所有的上述溶液,以无济于事。我下载MySQL的最新的.NET连接器(6.3.6)和问题消失。
尝试 [x]for MySQL 与 实体开发商.
我们已经做了一些改进的模型生成过程在我们的工具。你可以添加的Devart的实体模型项目,这是类似于ADO.NET 实体的框架模式,但有一些改进并不具有的超时的问题。
两个可能想到:
第一是,它是EF第1版(其运。净3.5SP1).看看 此 和 此.
其他的是,这种感觉大概喜欢相同的症状之一得到SQL服务器和预ODBC drivers(大约在1991年)中的错误类型的电话是用于:一种是使用的查询结果返回(select
),和其他的发言不返回的结果(create table
).最终连接成为无可救药地不同步的努力相匹配的选择结果对应的查询。(在那些日子里, 蓝色的屏幕上的死亡 不存在:计算机倾向于重新启动自愿,而不是。)
我不知道,如果该工具是混乱的连接方式的多种行动正在进行的:创造表格,核查所创建的结构,增加一个新柱,填充的行和核查或验证的排的内容之后被填补。如果这是因为,那么它可能是避免由是"纯洁"有关的序列行动:什么也不做,但完整的表格创建一个又一个的—那就是,什么也不做,这将导致建立一个表格然后 alter table
添加新的栏。