相关疑难解决方法(0)

从.net中的app.config或web.config读取设置

我正在开发一个C#类库,它需要能够从web.configapp.config文件中读取设置(取决于DLL是从ASP.NET Web应用程序还是Windows窗体应用程序引用).

我发现了

ConfigurationSettings.AppSettings.Get("MySetting")
Run Code Online (Sandbox Code Playgroud)

但是该代码已被Microsoft标记为已弃用.

我读过我应该使用的:

ConfigurationManager.AppSettings["MySetting"]
Run Code Online (Sandbox Code Playgroud)

但是,System.Configuration.ConfigurationManager该类似乎不能从C#类库项目中获得.

有谁知道最好的方法是什么?

.net c# configuration appsettings

764
推荐指数
15
解决办法
91万
查看次数

实体框架超时

当使用需要超过30秒才能完成的函数导入时,我将使用实体框架(EF)获得超时.我尝试了以下操作,但无法解决此问题:

我添加Default Command Timeout=300000到项目中App.Config文件中的连接字符串,该文件具有此处建议的EDMX文件.

这是我的连接字符串的样子:

<add 
    name="MyEntityConnectionString" 
    connectionString="metadata=res://*/MyEntities.csdl|res://*/MyEntities.ssdl|
       res://*/MyEntities.msl;
       provider=System.Data.SqlClient;provider connection string=&quot;
       Data Source=trekdevbox;Initial Catalog=StarTrekDatabase;
       Persist Security Info=True;User ID=JamesTKirk;Password=IsFriendsWithSpock;
       MultipleActiveResultSets=True;Default Command Timeout=300000;&quot;"
    providerName="System.Data.EntityClient" />
Run Code Online (Sandbox Code Playgroud)

我尝试直接在我的存储库中设置CommandTimeout,如下所示:

private TrekEntities context = new TrekEntities();

public IEnumerable<TrekMatches> GetKirksFriends()
{
    this.context.CommandTimeout = 180;
    return this.context.GetKirksFriends();
}
Run Code Online (Sandbox Code Playgroud)

我还能做些什么来让EF超时?这仅适用于非常大的数据集.小数据集一切正常.

这是我得到的错误之一:

System.Data.EntityCommandExecutionException:执行命令定义时发生错误.有关详细信息,请参阅内部异常 ---> System.Data.SqlClient.SqlException:超时已过期.操作完成之前经过的超时时间或服务器没有响应.


好的 - 我得到了这个工作,发生了什么事很愚蠢.我有连接字符串Default Command Timeout=300000和CommandTimeout设置为180.当我Default Command Timeout从连接字符串中删除它,它工作.所以答案是在上下文对象的存储库中手动设置CommandTimeout,如下所示:

this.context.CommandTimeout = 180;
Run Code Online (Sandbox Code Playgroud)

显然在连接字符串中设置超时设置对它没有影响.

c# asp.net entity-framework connection-string entity-framework-4

308
推荐指数
7
解决办法
27万
查看次数

设置连接到Azure的Entity Framework时超时

我有一个Azure数据库,我正在设置实体框架.我认为连接字符串是正确的......

<configSections>
   <section name="entityFramework"   type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
</configSections>
<connectionStrings>
     <add name="MyContext" connectionString="Server=tcp:azure_server_name.database.windows.net,1433;Database=azure_database_name;User ID=azure_user_account@azure_server_name;Password=azure_password;Trusted_Connection=False;Encrypt=True;Connection Timeout=30"
          providerName="System.Data.SqlClient" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)

...但我一直收到以下超时错误.

"Message":"An error has occurred.",
"ExceptionMessage":"The 'ObjectContent`1' type failed to serialize the response body for content type 'application/json; charset=utf-8'.",
"ExceptionType":"System.InvalidOperationException",
"StackTrace":null,
"InnerException":{
   "Message":"An error has occurred.",
   "ExceptionMessage":"Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.",
   "ExceptionType":"System.Data.SqlClient.SqlException",
   "StackTrace":"   
    at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)\r\n   
    at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)\r\n …
Run Code Online (Sandbox Code Playgroud)

entity-framework timeout azure

15
推荐指数
1
解决办法
5569
查看次数

在EF 5升级后,在"添加迁移"上接收"支持'上下文'上下文的模型已更改...

我们正在使用代码优先迁移构建应用程序.我们一直在使用Entity Framework 5.0.0 RC,我们更新了Entity Framework的NuGet包.数据库已与模型上下文同步.代码首次迁移已经好几个月了.

当我们修改模型,并尝试添加迁移,甚至查询迁移时,我们会收到System.InvalidOperationException,以便更改模型支持.

好吧,显然它有,我正在尝试添加迁移.

我们不确定该怎么做.如果删除更改,我可以成功运行Get-Migrations,并显示数据库已正确应用所有迁移.虽然ProductVersion列显示"5.0.0-rc.net45".

还有其他人遇到过这个问题吗?

entity-framework ef-migrations entity-framework-5

7
推荐指数
1
解决办法
851
查看次数