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>()