mvc miniprofiler использует DbConnection и платформу сущностей EntityConnection - PullRequest
1 голос
/ 12 августа 2011

Я чувствую, что упускаю что-то очень простое здесь, я интегрирую MVC Miniprofiler в свой проект, но я не могу найти способ создания своего контекста с правильным соединением, потому что это не EF Code First и моя модель наследуется отObjectContext, вот мой код

public static MyModel GetDataBaseModel()
{       
    DbConnection conn = new MySqlConnection(Utils.GetConnectionString());

    // this returns a DBConnection
    DbConnection profiledConnection = MvcMiniProfiler.Data.ProfiledDbConnection.Get(conn);  

    //my model needs an EntityConnection, so this is not possible
    return new MyModel(profiledConnection); 
}

Как это решить?

1 Ответ

1 голос
/ 12 августа 2011

Я предполагаю, что MyModel это контекст, созданный Entity Framework Designer, верно? EntityConnection может быть создан из DbConnection в сочетании с MetadataWorkspace. Я также предполагаю, что EF Designer добавил свойство connectionstring в ваше app / web.config, которое содержит что-то вроде этого:

metadata=res://*/Content.MyModel.csdl|res://*/Content.MyModel.ssdl|res://*/Content.MyModel.msl;

Это 3 компонента, составляющие ваше MetadataWorkspace. Для создания вашего EntityConnection из этой информации вы должны предоставить каждый файл в массиве:

string[] paths =
{
    // "res://" refers to a embedded resource within your DLL, this is automatically done if
    // you've used the EF designer.
    "res://*/Content.MyModel.csdl",
    "res://*/Content.MyModel.ssdl",
    "res://*/Content.MyModel.msl"
};

Assembly[] assembliesToConsider = new Assembly[]
{
    typeof(MyModel).Assembly
};

System.Data.Metadata.Edm.MetadataWorkspace workspace = new System.Data.Metadata.Edm.MetadataWorkspace(paths, assembliesToConsider);
EntityConnection connection = new EntityConnection(workspace, profiledConnection);

Я не проверял это с помощью MvcMiniProfiler (сначала установил его прямо сейчас), но могут быть некоторые проблемы, если профилированное соединение не ведет себя точно так же, как исходное MySqlConnection, попробуйте в противном случае попытаться создайте настройки.

...