나는 의존성 주입과 관련하여 도움을 요청하고 싶습니다. 건축 적 접근입니다.맞춤 Api에서 EF6 디커플링
그래서 개체가 설명되어 있고 Ef가 비즈니스 등을 수행하는 EF6에 의해 구현 된 ORM 계층이 있습니다.이 개체 위에 DatabaseApi라는 사용자 지정 라이브러리가 만들어졌으며 제목에 "Api" 여기서 데이터를 쿼리하고 데이터를 객체에 연결하는 데 매핑합니다. 순수한 테스트 목적으로 사용합니다. 내 응용 프로그램에서 다른 라이브러리를 테스트 할 수있게하고 싶습니다.
DbContext를 삽입하는 코드를 구현하기 시작했지만이 경우 사용 방법을 어떻게 처리해야할지 모르겠다.
나는 조롱과 EF, 특히 this one에 관한 몇 가지 블로그 게시물과 기사를 읽었지만 다른 라이브러리에서 그것을 분리하는 방법이 아니라 EF 자체를 테스트하는 것이 었습니다. 반면에 검색 키워드는 적절하지 않다고 가정합니다.
엔티티 프레임 워크를 다른 라이브러리에서 분리하는 방법에 대한 유용한 자습서와 기사를 알고 있습니까?
미리 감사드립니다.
예 :
나는 주사가 될 수 DbContext하기 위해 빈 인터페이스를 만들었습니다. 이것은 databaseContext에 의해 구현됩니다. 사용자 정의 API 광고 라이브러리 생성자에서public interface IDatabase
{
}
public class DatabaseModelContext : DbContext, IDatabase{
public DbSet<TableOne> TableOne { get; set; }
public DbSet<TableTwo> TableTwo { get; set; }
}
나는 단결하여 인터페이스를 해결하기 위해 함께 코드를 넣습니다. 그것이 작동하는지 아닌지 나는 모른다. 나는 아직 처형하지 않았다. 여기
public partial class DatabaseApi : IDatabaseApi {
private readonly IDatabase iDatabase;
private readonly UnityContainer unityContainer;
public DatabaseApi()
{
this.unityContainer = new UnityContainer();
this.unityContainer.RegisterType<IDatabase, DatabaseModelContext>();
this.iDiLibDatabase = this.unityContainer.Resolve<IDiLibDatabase>();
}
}
그리고
문제입니다. 주입으로 인해 인터페이스를 사용할 수 있지만, 알고있는 한 리소스를 관리하는 데 중요한 사용법이 있습니다. 그것을하는 방법?public partial class DatabaseApi : IDatabaseApi
{
public List<SomeDataContract> GetMainStructure()
{
var result = new List<SomeDataContract>();
//this is the old implementation
using (var database = new DatabaseModelContext())
{
//some data manipulation magic... :)
}
return result;
}
당신은 IDatabase''에서'IDbSet'회원을 선언하고 명시 적으로 구현할 수 있습니다. 'using ... dispose'의 경우, 일회용 객체를 처리하는 IOC 컨테이너를 사용해야합니다. Unity는 이것을 상자에서 꺼내지는 않지만, Unity를 검색하면 거기에 Unity를위한 'TransientDisposableLifetimeManager' 구현이 있습니다. 나는 다른 IOC 컨테이너에 대해 모른다. –
Keith, 제안에 감사드립니다. 당신의 제안에 따라 AutoFac과 흥미로운 기사, 튜토리얼을 발견했습니다. 감사! 내 문제에 대한 해결책을 찾았습니다! :) http://stackoverflow.com/questions/987761/how-do-you-reconcile-idisposable-and-ioc https://github.com/autofac/Autofac 에 http : // WWW. codeproject.com/Articles/25380/Dependency-Injection-with-Autofac – SayusiAndo
Keith, 내가 찾은 해결책으로 답을 표시하려면 어떻게해야합니까? – SayusiAndo