复制连接到实体框架的统一类



TIA

全面披露-我是ASP.NET web开发的新手,我仍在学习一些框架及其交互。我会尽量保护我在这里的陈述,并找出我不确定自己使用正确的陈述。

我正在使用我下载的一个名为BeYourMarket的开源软件包,其中我有一个提供服务的支付控制器。我不确定这到底意味着什么,但我相信这与团结有关?此服务似乎控制了网站上与订单相关的项目。它连接到整个网站正在使用的数据库中的一个表。我相信,实体框架正在为此提供渠道。

以下是我试图复制的代码片段,而不是管理订单。这种复制将管理代币订单。椭圆是我显示中间有代码的方式。

我怀疑这里有一些我根本不理解的地方。

下面是控制器,你可以看到我复制了订单服务

PaymentController.cs
{
    [Authorize]
    public class PaymentController : Controller
    {
        ...
        private readonly IOrderService _orderService;
        private readonly IOrderServiceToken _orderServiceToken;
        ...
    }
    public PaymentController(
        ...
        IOrderService orderService,
        IOrderServiceToken orderServiceToken,)
        {
        ...
        _orderService = orderService;         
        _orderServiceToken = orderServiceToken;
        ...
        }
}

以下是我从创建的重复文件/类

BeYourMarket.Service\OrderService.cs

public interface IOrderService : IService<Order>
{
}
public class OrderService : Service<Order>, IOrderService
{
    public OrderService(IRepositoryAsync<Order> repository)
        : base(repository)
    {
    }
}

BeYourMarket.Models\Models\Order.cs

{
    public partial class Order : Repository.Pattern.Ef6.Entity
    {
        public Order()
        {
            this.ListingReviews = new List<ListingReview>();
        }
        ...
        public int DataBaseVariable { get; set; }
        ...           
    }
}

BeYourMarket.Models\Models\Mapping\OrderMap.cs

    public class OrderMap : EntityTypeConfiguration<Order>
    {
        public OrderMap()
        {
            // Primary Key
            this.HasKey(t => t.ID);
            // Properties
            ...
            this.Property(t => t.PaymentPlugin)
                .HasMaxLength(250);
            // Table & Column Mappings
            this.ToTable("Orders");
           ...
            this.Property(t => t.ID).HasColumnName("ID");
           ...
        }
    }
}

可能值得注意的是,在下面,我的DbSet从未运行过。也许我需要做另一种初始设置,这是我第一次启动这个软件包时运行的。我不知道如何再次运行此"安装程序"。

BeYourMarket.Models\Models\BeYourMarketContext.cs

public BeYourMarket()
    : base("Name=DefaultConnection")
{
}
...
public DbSet<Order> Orders { get; set; }
public DbSet<OrderToken> OrderToken { get; set; }
...
protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Configurations.Add(new OrderMap());
        modelBuilder.Configurations.Add(new OrderTokenMap());
    }

BeYourMarket.Service\DataCacheService.cs

public class DataCacheService
{
...
        private IOrderService OrderService
    {
        get { return _container.Resolve<IOrderService>(); }
    }
    private IOrderServiceToken OrderServiceToken
    {
        get { return _container.Resolve<IOrderServiceToken>(); }
    }
...
}

这里附上的是我得到的错误图片。如果我用任何其他已经创建的数据库(例如<Order>)替换OrderSErviceToken.cs中的<OrderToken>类,一切都很好。这与我手动创建所有这些并缺少一些链接或注册有关。

在此处输入图像描述

如果你能坚持这么久,谢谢你的阅读。

Chris

问题是我忽略了以下文件中需要复制的一行:

-请注意,我忘记的那一行是带星号的一行。

UnityConfig.cs

.RegisterType<IRepositoryAsync<Order>, Repository<Order>>()
**.RegisterType<IRepositoryAsync<OrderToken>, Repository<OrderToken>>()**
...
.RegisterType<IOrderService, OrderService>()
.RegisterType<IOrderServiceToken, OrderServiceToken>()

最新更新