C# Windows Phone 8中的多个LINQ到SQL数据上下文
我在Windows Phone中创建了一个移动商务。此应用程序从服务器请求JSON数据并将其保存到本地数据库中。假设我有商店、产品和分类表。对于数据库,我为所有CRUD操作初始化单个DataContext,但是这个应用程序不能一次运行多个操作。例如,当我将一些数据添加到产品表中时,我无法从其他表中读取任何数据。我得到了无效的操作异常。然后,我尝试为每个操作初始化DataContext,我得到“尝试附加或添加一个非新实体,可能是从另一个DataContext加载的”异常。我的DataContext问题有什么解决方案吗?下面是插入类别方法的示例代码C# Windows Phone 8中的多个LINQ到SQL数据上下文,c#,linq,windows-phone-8,C#,Linq,Windows Phone 8,我在Windows Phone中创建了一个移动商务。此应用程序从服务器请求JSON数据并将其保存到本地数据库中。假设我有商店、产品和分类表。对于数据库,我为所有CRUD操作初始化单个DataContext,但是这个应用程序不能一次运行多个操作。例如,当我将一些数据添加到产品表中时,我无法从其他表中读取任何数据。我得到了无效的操作异常。然后,我尝试为每个操作初始化DataContext,我得到“尝试附加或添加一个非新实体,可能是从另一个DataContext加载的”异常。我的DataContext
public bool InsertAll(StoreTable Store, List<Simplz.ViewModel.Category> Categories)
{
bool value = true;
List<CategoryTable> _categories = new List<CategoryTable>();
using (SimplzDataContext DataContext = new SimplzDataContext(ConnectionString))
{
try
{
foreach (Simplz.ViewModel.Category p in Categories)
{
if (GetCategory(Store.ID, int.Parse(p.category_id)) == null)
{
_categories.Add(new CategoryTable(Store, p));
}
}
DataContext.Categories.InsertAllOnSubmit(_categories);
DataContext.SubmitChanges();
}
catch (Exception exc)
{
value = false;
Debug.WriteLine(exc.Message);
}
DataContext.Dispose();
}
return value;
}
public bool InsertAll(存储表存储,列表类别)
{
布尔值=真;
列表_categories=新列表();
使用(SimpzDataContext DataContext=new SimpzDataContext(ConnectionString))
{
尝试
{
foreach(类别中的Simplez.ViewModel.Category p)
{
if(GetCategory(Store.ID,int.Parse(p.category_ID))==null)
{
_添加(新的分类表(Store,p));
}
}
DataContext.Categories.InsertAllOnSubmit(_Categories);
DataContext.SubmitChanges();
}
捕获(异常exc)
{
值=假;
Debug.WriteLine(exc.Message);
}
Dispose();
}
返回值;
}
@Aron是什么让您认为此代码没有在客户端上运行?OP明确表示他有一个客户端数据库。@DavidG误读了关于JSON.OP部分的问题。问题不是由于有多个DbContext
s。问题是项目正在它们之间移动。在添加/插入新上下文之前,您可以将它们从原始的DbContext
中分离出来,也可以在整个操作过程中使用相同的上下文。@Aron请给我演示分离实体的示例好吗?