如何制作通用存储库?我想知道是否有人有任何关于制作通用存储库(或者甚至是已经制作并有详细记录的库)的好教程。我正在使用linqtosql,但它可能会改变,所以我不知道你是否可以创建一个通用存储库,如果我说切换到实体框架,几乎没有任何变化。谢谢我想我还应该添加为什么我想要一个通用存储库。原因是在我的数据库中,我喜欢公司表(由其他人付费订阅的用户)和个人表(通过谷歌或其他任何人找到我的网站并为自己的订阅付费的人),但我会有2个非常相似桌子。例如,我有2个设置表,一个用于企业用户,一个用于个人。现在因为它们是2个不同的表,我需要2个不同的插入方法,因为我将它插入到2个不同的表中,并且当前只有一个字段不同(即PK)。所以现在我需要所有这些我不想要的重复方法。也许我在我的数据库中有什么可以被认为是一个设计缺陷(也许是)但是这背后的原因之一是如果需要我可以很容易地将我的数据库分成2个不同的数据库并且我不会随时更改我的设计很快。这是我对另一个同类问题的回答。希望这会有所帮助:为每个对象创建通用存储库与特定存储库的优势?编辑:听起来您想将两种具体类型视为一种逻辑类型。为此,首先定义逻辑类型:publicinterfaceISubscription{//...}然后,将具体类型定义为数据模型的一部分(该接口将在另一个分部类中实现):[Table("CorporateSubscription")]publicpartialclassCorporateSubscription:ISubscription{}[Table("IndividualSubscription")]publicpartialclassIndividualSubscription:ISubscription{}接下来,定义操作逻辑类型的存储库:publicinterfaceISubscriptionRepository{CorporateSubscriptionGetCorporate(stringkey);IndividualSubscriptionGetIndividual(intuserId);IEnumerableListAll();IEnumerableListCorporate();IEnumerableListIndividual();无效插入(订阅订阅);最后,用两个表实现接口:publicclassSubscriptionRepository:ISubscriptionRepository{privatereadonlyYourDataContext_dataContext;publicSubscriptionRepository(YourDataContextdataContext){_dataContext=dataContext;}#regionISubscriptionRepositorypublicCorporateSubscriptionGetCorporate(字符串键){return_dataContext.CorporateSubscriptions.Where(c=>c.Key==key).FirstOrD默认();}publicIndividualSubscriptionGetIndividual(intuserId){return_dataContext.IndividualSubscriptions.Where(i=>i.UserId==userId).FirstOrDefault();}publicIEnumerableListAll(){returnListCorporate().Cast().Concat(ListIndividual().Cast());}publicIEnumerableListCorporate(){return_dataContext.CorporateSubscriptions;}publicIEnumerableListIndividual(){return_dataContext.IndividualSubscriptions;}publicvoidInsert(ISubscriptionsubscription){if(subscriptionisCorporateSubscription){_dataContext.CorporateSubscriptions.InsertOnCommit((CorporateSubscription)subscription);}elseif(订阅是IndividualSubscription){_dataContext.IndividualSubscriptions.InsertOnCommit((IndividualSubscription)订阅);}else{//原谅我,LiskovthrownewArgumentException("只支持企业和个人订阅","subscription");}}#endregion}这是一个插入的例子在演讲课上不要太紧张;我只需要一个基于标志创建订阅的案例:publicclassCreateSubscriptionPresenter{privatereadonlyICreateSubscriptionView_view;私有只读ISubscriptionRepository_subscriptions;publicCreateSubscriptionPresenter(ICreateSubscriptionViewview,ISubscriptionRepositorysubscriptions){_views=view;_subscription=订阅;}publicvoidSubmit(){ISubscription订阅;如果(_view.IsCorporate){subscription=newCorporateSubscription();}else{subscription=newIndividualSubscription();}subscription.Notes=_view.Notes;_subscriptions.Insert(订阅);很棒的LinqtoSql资源:默认情况下创建内容但可通过生成完全自定义的t4模板。http://l2st4.codeplex.com/将LinqtoSql用于多层应用程序。它有一个我觉得非常方便的GenericObjectDataSourcehttp://multitierlinqtosql.codeplex.com只需一次搜索就可以搜索IQueryable的所有属性http://naspinski.codeplex.com/以上是C#学习教程:如何制作通用商店图书馆?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
