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의 조롱을 사용하기 위해 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);
.
너무 간단하면서도 너무 우아하고 당신이 알아야 할 것입니다!