2015-12-11 82 views
0

TIA复制连接到实体框架

完全披露一个统一类 - 我是新的ASP.NET Web开发和我仍然在学习一些框架和它的相互作用。我会尽力在这里保护我的陈述,并确定那些我不确定我是否正确使用的陈述。

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

这里是我想要复制的代码片段,而不是它管理的订单这个重复将管理令牌订单。椭圆是我显示中间有代码的方式。

我怀疑这里有一些我根本不理解的东西。

以下是控制器,你可以看到我复制了OrderService

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.Model \型号\制图\ 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.Model \型号\ 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>(); } 
    } 
... 
} 

以下附件是错误,我得到的图像。如果我将OrderSErviceToken.cs中的<OrderToken>类替换为任何其他已创建的数据库,例如<Order>一切正常。它与我手动创建所有这些和缺少一些链接或注册有关。

enter image description here

感谢您阅读,如果你能够通过它这种坚持很长。

克里斯

回答

0

的问题是,我忽略了一条线,我需要下列文件中复制:

- 注意,我忘了是用星号线的线。

UnityConfig.cs

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