我已经在我的一个项目中实现了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类型都不会暴露给客户端代码,但只能在数据库层内访问。我想我的问题是,这是一个好的架构吗?
答案 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();
}
}