StructureMap - конструктор по умолчанию блюз
-
21-12-2019 - |
Вопрос
Я иду с ума, поэтому я получил это
public class FrameworkDbTestBase : IDisposable
{
protected readonly FrameworkDb Db;
public FrameworkDbTestBase()
{
var connection = Effort.DbConnectionFactory.CreateTransient();
Db = new FrameworkDb(connection);
}
public void Dispose()
{
Db.Dispose();
}
}
.
Это издевается на EF6 с усилиями .. Любите его, чтобы я мог постоянно выполнять тесты на заднем плане, пока все изменения происходят против моей кодовой базы ... это здорово, но, к сожалению, мне нужно для этого
public partial class FrameworkDb : DbContext
{
public FrameworkDb() : base("DefaultConnection"){}
public FrameworkDb(DbConnection connection): base(connection, true)
{
Configuration.LazyLoadingEnabled = false;
}
public DbSet<Site> Sites { get; set; }
...
.
Для того, чтобы получить издевание EF6 с усилием, однако, «Структурныйap» настаивает на том, чтобы создать меня экземпляра FrameworkDB с длинным конструктором, одним с параметром впрыска DBConnection, поэтому я получаю это:
StructureMap.StructureMapException was unhandled by user code
HResult=-2146232832
Message=StructureMap Exception Code: 202
No Default Instance defined for PluginFamily System.Data.Common.DbConnection, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
Source=StructureMap
ErrorCode=202
.
Вздох! Я катаюсь глазами ... я хочу структурныйap, чтобы использовать меня другой более короткий конструктор, поэтому после некоторого копания в соответствии с этим постом: карта структуры - я не хочу использовать жаднее конструктор! Я должен изменить это:
For<FrameworkDb>().Use <FrameworkDb>();
.
For<FrameworkDb>().Use(() => new FrameworkDb());
.
For<DbConnection>().Use(() => new EntityConnection("DefaultConnection"));
.
StructureMap.StructureMapException was unhandled by user code
HResult=-2146232832
Message=StructureMap Exception Code: 207
Internal exception while creating Instance '00fbcc4f-c5f0-4eb3-b814-9d0ba1bb8e19' of PluginType System.Data.Common.DbConnection, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089. Check the inner exception for more details.
Source=StructureMap
ErrorCode=207
.
Ну так много для этой теории ... аахум ... решение кто-нибудь? Привет всем? Вздох ...
Решение
Давай людей никого?Ответ такой простой ... Ну
var framework = new Framework();
For<FrameworkDb>().Use(() => framework);
.
Так просто, но так элегантно и то, что вам просто нужно знать!