我正在製作一個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異常可能是從我沒有保存任何運動到數據庫的事實來了,這會是這樣呢?