使用SqlQuery <t>时,Entity Framework如何处理连接

时间:2015-05-28 16:26:39

标签: c# entity-framework ninject

Entity Framework是否会处理GetFooFromUnmappableEntity方法中使用的SqlConnection?

我有以下服务:

public class FooService {
    private readonly FooContext fooContext;

    public FooService(FooContext fooContext) {
        this.fooContext = fooContext;
    }

    public Foo GetFooFromUnmappableEntity(int id) {
        return fooContext.Database.SqlQuery<Foo>(string.Format("select * from GetFoo({0})", id);
    }
}

我正在使用Ninject来管理类库中的依赖项。所以绑定存在于这样的地方:

Bind<FooContext>.ToSelf();

1 个答案:

答案 0 :(得分:0)

Ninject是&#34;依赖倒置&#34;的实现,这意味着你的依赖是接口,Ninject将为你提供实现。您需要创建一个IFooRepository,在其实现中使用FooContext。然后IFooRepository被注入到IFooService的构造函数中,而IFooService并不需要知道有关如何实现存储库的任何信息。

就处置SqlConnection而言,您需要绑定存储库.InRequestScope()并使用OnePerRequestModule which will dispose your objects at the end of the request.