문제

나는 미쳤어. 그래서 나는 이걸 얻었다

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의 조롱을 사용하기 위해 StructureMap을 사용하면 DBConnection Injection 매개 변수가있는 Long 생성자가있는 Long 생성자가있는 프레임 워크 DB 인스턴스를 만드는 것이 좋습니다.

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
.

한숨! 나는 내 눈을 굴리다 ... 나는 구조 렘 맵이 나에게 다른 짧은 생성자를 사용하기를 원한다. DONT-WIS-TO-THE-THE-THE GREED-CONPRITION / 1073796 "> 구조지도 - 나는 가장 욕심 많은 생성자를 사용하고 싶지 않아! 나는 이것을 바꿔야한다 :

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
.

그럼 그 이론에 대해서는 ... Ahum ... 솔루션 누군가? 안녕하세요? 한숨 ...

도움이 되었습니까?

해결책

사람들에게 아무도 없습니까?대답은 너무 간단합니다 ... 잘

var framework = new Framework();
For<FrameworkDb>().Use(() => framework);
.

너무 간단하면서도 너무 우아하고 당신이 알아야 할 것입니다!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top