ניצן mvc- מיני-פּראָפילער דאַטאַבייס פּראָפילינג מיט ענטיטי פראַמעוואָרק קאָוד ערשטער

איך נוצן דעם mvc-mini-profiler אין מיין פּרויעקט געבויט מיט ASP.Net MVC 3 און Entity Framework קאָד-ערשטער.

אַלץ אַרבעט גרויס ביז איך פּרוּווט צו לייגן דאַטאַבייס פּראָפילינג דורך ראַפּינג די קשר אין די ProfiledDbConnection ווי דיסקרייבד אין די דאַקיומענטיישאַן. זינט איך נוצן אַ DbContext, די וועג איך פּרוּווט צו צושטעלן די פֿאַרבינדונג איז דורך די קאָנסטרוקטאָר ניצן אַ סטאַטיק פאַבריק אופֿן:

public class MyDbContext : DbContext
{                
    public MyDbContext() : base(GetProfilerConnection(), true)
    { }

    private static DbConnection GetProfilerConnection()
    {
        // Code below errors
        //return ProfiledDbConnection.Get(new SqlConnection(ConfigurationManager.ConnectionStrings["MyConnectionName"].ConnectionString));

        // Code below works fine...
        return new SqlConnection(ConfigurationManager.ConnectionStrings["MyConnectionName"].ConnectionString);
    }

    //...
}

ווען איך נוצן די ProfiledDbConnection , איך באַקומען די פאלגענדע טעות:

ProviderIncompatibleException: דער שפּייַזער האט ניט אומגעקערט אַ ProviderManifestToken שטריקל.

Stack Trace:

[ArgumentException: The connection is not of type 'System.Data.SqlClient.SqlConnection'.]
   System.Data.SqlClient.SqlProviderUtilities.GetRequiredSqlConnection(DbConnection connection) +10486148
   System.Data.SqlClient.SqlProviderServices.GetDbProviderManifestToken(DbConnection connection) +77
   System.Data.Common.DbProviderServices.GetProviderManifestToken(DbConnection connection) +44

[ProviderIncompatibleException: The provider did not return a ProviderManifestToken string.]
System.Data.Common.DbProviderServices.GetProviderManifestToken(DbConnection connection) +11092901
   System.Data.Common.DbProviderServices.GetProviderManifestToken(DbConnection connection) +11092745
   System.Data.Entity.DbModelBuilder.Build(DbConnection providerConnection) +221
   System.Data.Entity.Internal.LazyInternalContext.CreateModel(LazyInternalContext internalContext) +61
   System.Data.Entity.Internal.RetryLazy`2.GetValue(TInput input) +1203482
   System.Data.Entity.Internal.LazyInternalContext.InitializeContext() +492
   System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) +26
   System.Data.Entity.Internal.Linq.InternalSet`1.Initialize() +89
   System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext() +21
   System.Data.Entity.Infrastructure.DbQuery`1.System.Linq.IQueryable.get_Provider() +44
   System.Linq.Queryable.Where(IQueryable`1 source, Expression`1 predicate) +135

איך בין סטעפּט דורך און דער טיפּ איז אומגעקערט דורך ProfiledDbConnection.Get איז פון טיפּ ProfiledDbConnection (Even אויב די קראַנט מיניפּראָפילער איז נאַל).

די MiniProfiler.Start () אופֿן איז גערופן אין די גלאבאלע Application_BeginRequest () אופֿן איידער די DbContext איז ינסטאַנטיאַטעד. איך רופן אויך די אָנהייב אופֿן פֿאַר יעדער בקשה ראַגאַרדלאַס, אָבער איך רופן האַלטן אויב דער באַניצער איז נישט אין די ריכטיק ראָלע: DbContext ניצן די פאלגענדע יניטיאַליסער:

For().Singleton().HybridHttpOrThreadLocalScoped();

איך פֿאַרשטיין אַז עס איז אַ ענלעך קשיא אויף דאָ מיט אַ גוטע דערקלערונג פון וואָס ס געשעעניש פֿאַר אַז באַניצער, אָבער עס קען נישט ויסקומען צו סאָלווע מיין פּראָבלעם.

רעדאַגירן:

12183] צוליב קלארקייט.איך בין טריינג צו פאָרן די קשר ווי ProfiledDbConnection אין סדר צו פּראָפיל די דזשענערייטאַד סקל פון ענטיטי פראַמעוואָרק קאָוד ערשטער.

Profiled Sql

די ענטיטי פראַמעוואָרק איז דערוואַרטן אַ קשר מיט טיפּ SqlConnection וואָס דאָך איז נישט.

דאָ איז אַ בייַשפּיל פון מיין פֿאַרבינדונג שטריקל (באַמערקן די שפּייַזער נאָמען)


איך געפרוווט צו מאַכן מיין אייגענע ווערסיע פון ​​די ProfiledDbConnection ינכעראַטיד פון SqlConnection אָבער עס איז אַ געחתמעט קלאַס .

אויב עס איז עטלעכע וועג צו דערציילן ענטיטי פראַמעוואָרק וועגן דעם מנהג קאַנעקשאַן טיפּ, טאָמער דאָס וואָלט אַרבעט. איך געפרואווט באַשטעטיקן די שפּייַזער נאָמען אין די קשר שטריקל צו MvcMiniProfiler.Data.ProfiledDbConnection אָבער דאָס קען נישט אַרבעטן.

אַזוי. אפֿשר אַן עוואָלוציע פון ​​די קשיא וואָלט זיין: ווי קענען איר פאָרן אַ מנהג קאַנעקשאַן טיפּ צו ענטיטי פראַמעוואָרק קאָוד ערשטער?

24
задан robmzd 13 July 2011 в 07:51
поделиться