我正在制作一个Windows Phone 7.1应用程序,并且在提交对数据库的更改时遇到了很多麻烦。这里是我的数据库中的表的结构:如何在LinqToSql中相关的多个表上提交更改?
日< -1 ----- * - > TrainingSession < -many ----- 1->体育
所以,一天能有许多训练课程,训练课程有一项运动。一项运动可以自然地进行许多不同的训练。
的主键是这样的: 日 - 日期时间 TrainingSession - INT(DB生成的) 体育 - 为nvarchar(200)
体育只会有属性sportName和iconFileName。
我已经把EntitySet的白天和体育成立协会,并TrainingSession具有的EntityRef和的EntityRef。如果运动需要EntitySet,我不能100%确定,所以如果我错了,请纠正我。目前,我只是在我的Sport课程中对一些体育项目进行了硬编码测试,并且您会看到我获取ObservableCollection以获取这些体育项目。
这里是我想创建天的培训课程的集合,每次训练有不同的运动项目:
public void CreateDay(DateTime date)
{
FitPlanDataContext calendarDatabase = new FitPlanDataContext(FitPlanDataContext.ConnectionString);
DateTime firstDate = new DateTime(date.Year, date.Month, 1);
DayItem dayItem = new DayItem();
dayItem.DateTime = firstDate;
fillTestDayItemWithRandomData(dayItem);
calendarDatabase.DayItems.InsertOnSubmit(dayItem);
calendarDatabase.SubmitChanges();
}
private void fillTestDayItemWithRandomData(DayItem dayItem)
{
ObservableCollection<SportArt> sportArtCollection = SportArtController.GetAllSports();
dayItem.TrainingSessions = new EntitySet<TrainingSession>();
ObservableCollection<TrainingSession> trainingSessionCollection = new ObservableCollection<TrainingSession>();
TrainingSession trainingSession1 = new TrainingSession();
trainingSession1.DayItem = dayItem;
trainingSession1.SportArt = sportArtCollection[1];
trainingSessionCollection.Add(trainingSession1);
TrainingSession trainingSession2 = new TrainingSession();
trainingSession2.DayItem = dayItem;
trainingSession2.SportArt = sportArtCollection[2];
trainingSessionCollection.Add(trainingSession2);
FitPlanDataContext calendarDatabase = new FitPlanDataContext(FitPlanDataContext.ConnectionString);
calendarDatabase.TrainingSessions.InsertAllOnSubmit<TrainingSession>(trainingSessionCollection);
}
此代码是不是为我工作,和它给我下面的错误:
NotSupportedException was Unhandled: An attempt has been made to Attach or Add an entity that is not new, perhaps having been loaded from another DataContext. This is not supported.
在我得到这个错误之前,我还得到了NullReferenceExceptions。
我一直在四处寻找一个解决方案,我看到一些人使用的分离或变通方法与附着,但我还没有想通了,我如何能实现它向我的代码。任何人都可以帮我一个忙吗?
另外,我认为NullReferenceException异常可能是从我没有保存任何运动到数据库的事实来了,这会是这样呢?