8

エラーをデータベースに記録する ELMAH では、次のように記述できます。

<errorLog type="Elmah.SqlErrorLog, Elmah"
            connectionStringName="EducoparkEntities"/>

ただし、EntityFramework を使用すると、EF の接続文字列にもメタデータが含まれているため、これは機能しません。

<add name="EducoparkEntities" connectionString="metadata=res://*/EducoparkData.csdl|res://*/EducoparkData.ssdl|res://*/EducoparkData.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=(Local);Initial Catalog=...;User Id=...;Password=...;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient"/>

では、Elmah で EntityFramework 接続文字列を使用するにはどうすればよいでしょうか?

4

4 に答える 4

10

1

エンティティ フレームワークで提供される ConnectionStringBuilder を介して、データベース接続文字列を抽出できます。

private string ExtractConnectionStringFromEntityConnectionString(string entityConnectionString)
{
    // create a entity connection string from the input
    EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder(entityConnectionString);

    // read the db connectionstring
    return entityBuilder.ProviderConnectionString;
}

2

その db 接続文字列を Elmah にプラグインするには、Application_Start (Global.asax 内)に設定する必要があります。

于 2010-05-09T02:36:05.880 に答える
4
    public class YourErrorLog : SqlErrorLog
    {
        public override string ConnectionString
        {
            get
            {
                //return any Connection string EF or any
            }
        }
    }

および構成の変更

    <elmah>
        <errorLog type="YourAssembly.YourErrorLog, YourAssembly" connectionStringName="elmah-sqlserver" />
    </elmah>

Elmah は sql 接続文字列を要求しますが、必要な場合は接続文字列を取得します。

于 2011-12-21T17:24:58.610 に答える
2

少なくとも直接ではありません。あなたがする必要があるのは、実際にデータベースを参照する EF 接続文字列の一部 ( ) を抽出し、それを web.configprovider connection stringのセクションの独自のエントリに入れることです。<connectionStrings>

<connectionStrings>
  <add name="EducoparkELMAH"
      connectionString="Data Source=(Local);Initial Catalog=...;User Id=...;Password=...;MultipleActiveResultSets=True" 
      provider="System.SqlClient" />
</connectionStrings>

または、プログラムで実行することもできます。エンティティ コンテキストには「Connection」というプロパティがあり、そのプロパティには、探しているプロパティ「ConnectionString」があります。

string elmahConnectionString = EducoparkEntities.Connection.ConnectionString;

マルク

于 2009-07-05T07:04:15.107 に答える