Rly*_*now 3 c# data-access-layer repository-pattern
我正在编写mmorpg服务器模拟器(业余爱好项目),我已停止编写数据访问层.问题是我不能使用ORM(性能问题).我已经阅读了很多关于Repository模式的信息,但它似乎不适合我的项目,因为我需要的方法如:(player db)GetAllByLevel(...),GetByName(...)等.我希望我的应用程序与数据库无关.(我现在正在使用sql server但是我想稍后添加对mysql的支持)哪种数据访问模式适合我的项目?
对不起,我的英语不好.
还有一个问题.我已经读过,存储库模式在agreggate根目录上运行.我有3个桌面玩家,player_friend和player_chest.播放器是一个agreggate root,如果我没错,我应该创建一个可以拥有以下方法的存储库(PlayerRepository):GetFriends([player id],...),GetChest([player id],...)等等.我对吗?
我已经阅读了很多关于Repository模式的信息,但它似乎不适合我的项目,因为我需要的方法如:(player db)GetAllByLevel(...),GetByName(...)等.
反之.有很多错误的存储库模式示例(通常是漏洞抽象),它们会教你错误.GetAllByLevel因为它非常清楚地描述了该方法的作用,所以它是一种很好的方法.
我写过关于存储库模式的文章:http://blog.gauffin.org/2013/01/repository-pattern-done-right/.还要阅读本文开头的抽象链接.
问题是我不能使用ORM(性能问题).
没问题.存储库模式用于抽象数据源,无论它是哪种类型.
如果你想使用vanilla ADO.NET,你可以阅读这篇博文:http://blog.gauffin.org/2013/01/ado-net-the-right-way/
还有一个问题.我已经读过,存储库模式在agreggate根目录上运行.我有3个桌面玩家,player_friend和player_chest.播放器是一个agreggate root,如果我没错,我应该创建一个可以拥有以下方法的存储库(PlayerRepository):GetFriends([player id],...),GetChest([player id],...)等等.我对吗?
不,我会说朋友也是根.阅读有关设计聚合的文章:http://dddcommunity.org/library/vernon_2011