[英]New DataContext per second
我正在為游戲制作服務器,我需要保存每個人的第二個,所以我做了:-
private static void SubmitChanges() {
while(true) {
try {
using(GameDBDataContext db = new GameDBDataContext()){
foreach(IHero hero in world.Entities.BattleEntities.OnlineHeros.Values) {
hero.Update(db);
}
}
} catch(Exception ex) {
Console.WriteLine(ex.ToString());
}
Thread.Sleep(1000);
}
}
這樣好嗎 如果我有500個在線英雄,那會很好嗎?
編輯 :檢查需要多長時間:-
private void UpdateDatabase() {
try {
using(GameDBDataContext db = new GameDBDataContext()) {
foreach(IHero hero in world.Entities.BattleEntities.OnlineHeros.Values) {
DateTime now = DateTime.Now;
hero.Update(db);
DateTime after = DateTime.Now;
Console.WriteLine((now - after).Milliseconds);
}
}
} catch(Exception ex) {
Console.WriteLine(ex.ToString());
}
}
結果:-
-13
-10
-13
-26
-19
-24
-25
-19
-27
-22
-19
-26
-25
-21
-24
-22
您可以在一個sql請求中全部更新。 Linq-to-sql具有方法SubmitChanges,可提交上下文中的所有更改。 因此,您可以在英雄中循環積累更改,然后循環提交。
private static void SubmitChanges()
{
while(true) {
try {
using(GameDBDataContext db = new GameDBDataContext()){
foreach(IHero hero in world.Entities.BattleEntities.OnlineHeros.Values) {
hero.UpdateRecord(db);
}
db.SubmitChanges();
}
} catch(Exception ex) {
Console.WriteLine(ex.ToString());
}
Thread.Sleep(1000);
}
}
其中UpdateRecord是您的Update方法,但不包括SubmitChanges。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.