Вопрос

Я иду с ума, поэтому я получил это

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);
.

Так просто, но так элегантно и то, что вам просто нужно знать!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top