我在.mdf中的表中构建了LINQ to SQL文件,其中表“Measurement”与“Experiment_Info”表相关联(一对一)。在测试我的应用程序时,我输入了一些“测量”条目。因此,自动增量计算了表格的ID。之后我才开始使用“Experiment_Info”-tables添加Entries。
两者都是正确创建的,但“Measurement”表的ID永远不会等于“Experiment_Info”表的ID,因为Measurement-ID已被计算在内。
所以当我正在调用LINQ连接语句时:
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,不是吗?
我的结论是对的吗?如果它们是如何重置的呢?
另外,我想展示如何向数据库添加条目,因为我认为这也可能是问题所在。当我在“一对多”关系中添加条目时,它的工作方式如下:
newMeasurement.SpectrumSet.Add(newSet);
如果我在'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();
我希望我能提供足够的有关我的问题的信息。
提前致谢。
答案 0 :(得分:2)
你与你所描述的没有一对一的关系,你根本没有任何关系。
让一个表使用自动递增ID。
让另一个表使用该表中的ID,设置其用于定义关系的ID(可能还有一个单独的自动ID用于标识自己的行)。
这样数据库就反映了表之间的关系。
其他技术人员将使用该关系(在这种情况下为linq2sql,但它也适用于从数据库获取数据的其他方法)。