首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何配置StructureMap以创建DbConnection

如何配置StructureMap以创建DbConnection
EN

Stack Overflow用户
提问于 2015-06-01 08:56:01
回答 1查看 200关注 0票数 0

下面有我的实体框架上下文的代码。

我使用重载的构造函数注入内存数据库进行测试。这很好,但是当我在我的MVC应用程序中使用它时,我需要为StructureMap配置DbConnection。我不知道该怎么做

代码语言:javascript
复制
public class EfContext : DbContext
{
    //This can be a full blown connection string or if it is just a single string like this it is defaulting to SQL Express
    public EfContext() : base("SQLExpressPaxiumMusic")
    {

    }

    public EfContext(DbConnection connection) : base(connection, true)
    {

    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        Database.SetInitializer(new DbContextInitialiser());
    }

    public DbSet<User> Users { get; set; }
}

    public static IContainer Initialize()
    {
        ObjectFactory.Configure(config =>
        {
            config.Scan(scan =>
            {
                scan.TheCallingAssembly();
                scan.WithDefaultConventions();
            });

            config.For<IWebAuthenticator>().Use<WebAuthenticator>();
            config.For<EfContext>().Use<EfContext>();
            config.For<IUserRepository>().Use<UserRepository>();
            config.For<DbConnection>() ****What goes here**** ????
        });

        return ObjectFactory.Container;
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-01 09:37:16

您应该告诉StructureMap您想使用哪个EfContext构造函数。默认情况下,StructureMap将使用最贪婪的构造函数,即参数最多的构造函数,在您的例子中是public EfContext(DbConnection connection)。因此,在运行时,您需要指定构造函数public EfContext(),它将从连接字符串创建DbConnection

代码语言:javascript
复制
config.For<EfContext>().Use<EfContext>().SelectConstructor(() => new EfContext());

顺便说一句,不推荐使用ObjectFactory,因此强烈建议不要使用它。有关在http://structuremap.github.io/integrations/aspnet-mvc/应用程序中安装StructureMap的推荐方法,请参见ASP.NET。

编辑:使用正确的SelectConstructor语法,因为我忘记.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30569382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档