这在DI世界中可以吗?

时间:2010-05-12 18:52:23

标签: c# linq-to-sql dependency-injection

我已经在我的一个项目中实现了Unity DI,但我知道,我认为这是一个简单的问题。

我的DataContext:

public partial class AuctionDataContext : DataContext {
  public Table<AuctionItem> AuctionItems;

  ...
 }

用于在数据库中插入AuctionItem的一些代码。请注意我如何将界面转换为实际类型。这是为了使所有内容都能正确使用DataContext。

 public void Insert(IAuctionItem item) {
  _dataStore.DataContext.AuctionItems.InsertOnSubmit((AuctionItem)item);
  _dataStore.DataContext.SubmitChanges();
 }

AuctionItem和DataContext类型都不会暴露给客户端代码,但只能在数据库层内访问。我想我的问题是,这是一个好的架构吗?

1 个答案:

答案 0 :(得分:1)

你的架构是“好的”,但所有的架构都是上下文的,因为一种模式在某种情况下可能是完美的,但在另一种情况下可能很糟糕。

模式明智的是,从持久性机制中抽象出您的Repository / DAO总是很聪明的,从我可以看到您已经完成了这一点。我确实建议你实现另一个界面,让你可以灵活地改变实现。

 public interface IRepository<T>{
    void Insert(T item);
 }

 public class AuctionItem : IRepository<IAuctionItem> {

   public void Insert(IAuctionItem item) {
      _dataStore.DataContext.AuctionItems.InsertOnSubmit((AuctionItem)item);
      _dataStore.DataContext.SubmitChanges();
   }

 }