У меня странная ситуация, не могу понять причину. При запуске приложения для Windows Phone у меня есть следующий код, в котором я просто создаю несколько Group, затем создаю несколько Account, где ранее созданные Group являются объектами, связанными с Account.
public async static void SampleData()
{
var grp1 = await Manager.GroupManager.SaveGroupAsync(new Group { GroupName = "Wells Fargo" });
var grp2 = await Manager.GroupManager.SaveGroupAsync(new Group { GroupName = "Chase" });
var grp3 = await Manager.GroupManager.SaveGroupAsync(new Group { GroupName = "Citi" });
var acct1 = await Manager.AccountManager.SaveAccountAsync(new Account { AccountName = "Spending", AccountType = (int)Enums.AccountType.Banking, Group = grp1 }); //0
var acct2 = await Manager.AccountManager.SaveAccountAsync(new Account { AccountName = "Credit Card", AccountType = (int)Enums.AccountType.Credit, Group = grp1 }); //1
var acct3 = await Manager.AccountManager.SaveAccountAsync(new Account { AccountName = "Mortgage", AccountType = (int)Enums.AccountType.Banking, Group = grp2 }); //2
var acct4 = await Manager.AccountManager.SaveAccountAsync(new Account { AccountName = "Savings", AccountType = (int)Enums.AccountType.Banking, Group = grp2 }); //3
var acct5 = await Manager.AccountManager.SaveAccountAsync(new Account { AccountName = "Spending", AccountType = (int)Enums.AccountType.Banking, Group = grp2 }); //4
var acct6 = await Manager.AccountManager.SaveAccountAsync(new Account { AccountName = "Credit Card", AccountType = (int)Enums.AccountType.Credit, Group = grp3 }); //5
}
Соответствующие методы:
Менеджеры
public async static Task<Group> SaveGroupAsync(Group group)
{
await DataAccess.GroupData.SaveGroupAsync(group);
return group;
}
public async static Task<Account> SaveAccountAsync(Account account)
{
await DataAccess.AccountData.SaveAccountAsync(account);
return account;
}
Доступ к данным
public async static Task<Group> SaveGroupAsync(Group group)
{
using (var dc = new CbmDataContext(DBHelper.LocalConnectionString))
{
if (group.GroupId == 0)
dc.Groups.InsertOnSubmit(group);
dc.SubmitChanges();
return group;
}
}
public async static Task<Account> SaveAccountAsync(Account account)
{
using (var dc = new CbmDataContext(DBHelper.LocalConnectionString))
{
if (account.AccountId == 0)
dc.Accounts.InsertOnSubmit(account);
dc.SubmitChanges();
return account;
}
}
Когда запускаются первые 3 сохранения для группы, я вижу 3 новых вставленных объекта. Это мое ожидаемое поведение. Когда код запускается для первой новой учетной записи, я вижу новую учетную запись, но также вижу НОВУЮ запись в таблице групп для указанной учетной записи. У меня получилось 2 группы с одинаковым названием.
Что я делаю неправильно, что позволяет этому происходить? Я вижу, что для Account.GroupId задан идентификатор группы, указанный ниже.