.mdf内のテーブルからLINQtoSQLファイルを作成しました。ここで、テーブル「Measurement」は「Experiment_Info」テーブルに(1対1で)関連付けられています。アプリケーションをテストしているときに、いくつかの「測定」エントリを入力しました。したがって、自動インクリメントはテーブルのIDをカウントアップしました。「Experiment_Info」テーブルを使用してエントリを追加し始めたのはその後のことです。
どちらも正しく作成されていますが、Measurement-IDはすでにカウントアップされているため、「Measurement」テーブルのIDが「Experiment_Info」テーブルのIDと同じになることはありません。
したがって、LINQjoinステートメントを呼び出すときは次のようになります。
bs.DataSource =
from m in measDAL.getMeasurements()
join i in measDAL.getExperimentInfo() on m.Measurementid equals i.ExperimentInfoID
select new {
m.Measurementid,
m.MeasurementName,
i.DateTime,
i.Project
};
この場合、「等しい」は本当に「==」を意味しますか?つまり、データベース内のすべてのIDを何らかの方法でリセットする必要がありますね。
私の結論は正しいですか?もしそうなら、このリセットはどのように行うことができますか?
さらに、データベースにエントリを追加する方法を示したいと思います。これも問題になる可能性があるためです。「1対多」の関係でエントリを追加すると、次のように機能します。
newMeasurement.SpectrumSet.Add(newSet);
「1対1」の関係にある「Experiment_Info」の場合、次のようにします。
Measurement newMeasurement = new Measurement();
newMeasurement.MeasurementName = name;
ExperimentInfo exInfo = new ExperimentInfo();
newMeasurement.ExperimentInfo = exInfo;
newMeasurement.ExperimentInfo.Analyze = analysis;
newMeasurement.ExperimentInfo.DateTime = dateTime;
newMeasurement.ExperimentInfo.DonorAge = donorAge;
newMeasurement.ExperimentInfo.Project = project;
newMeasurement.ExperimentInfo.Treatment = treatment;
newMeasurement.ExperimentInfo.MediaType = mediatype;
newMeasurement.ExperimentInfo.DonorAge = donorAge;
newMeasurement.ExperimentInfo.Passage = Passage;
newMeasurement.ExperimentInfo.Objective = objective;
newMeasurement.ExperimentInfo.Substrate = substrate;
newMeasurement.ExperimentInfo.Power = power;
measurements.InsertOnSubmit(newMeasurement);
measDAL.context.SubmitChanges();
私の問題について十分な情報を提供できればと思います。
前もって感謝します。