首页 > 解决方案 > Autofac 属性在 Entity Framework 6 上自动装配

问题描述

所以我已经被这个问题困扰了很长一段时间。我们正在实施 DDD 架构,我不希望我们的模型或实体出现问题。

我们也在使用 EF6 和 Autofac。我不想实现存储库模式,因为 EF 已经充当了这种模式。

例如,假设我们有一个名为 TestContext 的上下文

public class TestContext : DbContext
    {
        public TestContext() : base("TestContext")
        {
        }
        public DbSet<AEntity> AEntities { get; set; }
    }

它拥有的一个 DBset 是 AEntity

public class AEntity
    {
        public ITest testService;
        public Guid Id { get; set; }
        public string Name { get; private set; }
        public AEntity()
        {

        }

        public AEntity(string name)
        {
            this.Name = name;
        }

        public virtual void Test()
        {
            // Logic.

            // Global testLogic for names
            testService.Test(this.Name);
        }
    }

所以我将 autoface 配置为自动装配属性注入

builder.RegisterType<AEntity>().PropertiesAutowired();

如果 autofac 负责实例化实例,这很有效,如下面的方法所示:

public ValuesController(AEntity aEntity)
        {
            aEntity.Test();
        }

太好了,一切正常,但是当我做这样的事情时,问题就来了

public ValuesController(TestContext context)
        {
            var a = context.AEntities.FirstOrDefault();
            a.Do();
        }

没有自动装配,我知道这ITest是因为 autofac 不是实例化器或解析器,但这是我想要完成的事情。

任何指针,如果我的问题没有意义,请告诉我。

标签: c#asp.net-web-apiasp.net-web-api2autofac

解决方案


推荐阅读