0
我想要發生的事情是,如果我已經在會話中創建了記錄(GuildName
)並將其附加到上下文中,則EF將從上下文中檢索它創建一個副本,但它不能縫以使它不創建重複。EF不從上下文中檢索實體
public static async Task ProcessNames()
{
var db = new SQLDbContext();
db.Configuration.ProxyCreationEnabled = false;
var existingNames = db.CharacterNames.Include("GuildName").Include("RealmName").Take(10).ToList();
var gatherGuildNameTaskList = (
from name in existingNames
select GetGuildFromName(name, db)).ToList();
await Task.WhenAll(gatherGuildNameTaskList);
db.SaveChanges();
}
public static async Task GetGuildFromName(CharacterName characterName, SQLDbContext db)
{
var character = await ApiHelper.GetJsonFromUrlAsync<Character>(new Uri(URL));
if (character.Guild == null) return;
//This is the call that appears to not be working as intended
var guildName = db.GuildName.
SingleOrDefault(x => x.RealmName.Name == character.Guild.Name) ?? new GuildName
{
Name = character.Guild.Name,
CharacterNames = new List<CharacterName>(),
RealmName = characterName.RealmName
};
if (!guildName.Equals(characterName.GuildName))
{
characterName.GuildName = guildName;
}
}
我只是有它需要10名進行測試,但通常有幾個10萬的
我能想到的唯一的事情就是調用節省的GetGuildFromName
搜索方法的變化,但我有一種感覺,它可能無法按預期工作,但可能會對性能造成不利影響,而不是性能是一個巨大的因素,但我喜歡試圖讓事情合理地執行。
這是它,我想上下文,它在這樣做時保存到數據庫,但顯然不適用於查詢的上下文 – Toxicable