0

我从 .mdf 中的表中构建了我的 LINQ to SQL 文件,其中表“Measurement”与“Experiment_Info”表相关联(一对一)。在测试我的应用程序时,我输入了一些“测量”条目。所以自动增量计算了表的 ID。直到后来我才开始添加带有“Experiment_Info”表的条目。

两者都是正确创建的,但是“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();

我希望我能提供有关我的问题的足够信息。

提前致谢。

4

1 回答 1

2

根据你的描述,你没有一对一的关系,你根本没有关系。

让一个表使用自动递增的 id。

让另一个表使用该表中的 ID,设置其 id 来定义关系(它也可能有一个单独的自动 id 来标识自己的行)。

这样数据库反映了表之间的关系。

然后其他技术将使用该关系(在这种情况下为 linq2sql,但它也适用于从数据库获取数据的其他方式)。

于 2012-09-03T10:07:50.993 回答