Как мне увеличить вторичный идентификатор (не первичный ключ) с помощью linq? - PullRequest
1 голос
/ 29 мая 2019

Я пытаюсь записать результаты измерений от датчика в таблицу sql с именем MeasResult.

Эта таблица имеет идентификатор в качестве первичного ключа и еще один идентификатор с именем MeasID. Мне нужно увеличивать этот MeasureID на 1 каждый журнал измерений. В каждом журнале измерений будет добавлено 50 строк в базу данных, и эти последние добавленные строки должны иметь одинаковые MeasID.

Я попробовал следующее:

private void BtnSaveMeas_Click(object sender, EventArgs e)
{
    using (LinqDataClassesDataContext dataContext = new LinqDataClassesDataContext())
    {            
        var measid = dataContext.MeasResults.Max(x => x.MeasId) + 1;

        string id = ""; string plane = ""; int pos = 0; int dist = 0; double apert = 0;

        id = comboBMouldID.SelectedText;
        plane = comboBSurface.SelectedText;
        pos = Convert.ToInt32(txtTravelPos.Text);

        for (int i = 0; i < daGridMeas.Rows.Count - 1; i++)
        {
            dist = Convert.ToInt32(daGridMeas.Rows[i].Cells[0].Value.ToString());
            apert = Convert.ToDouble(daGridMeas.Rows[i].Cells[1].Value.ToString());

            var st = new MeasResult()
            {
                st.MID = id,
                st.Plane = plane,
                st.Postn = pos,
                st.Distnc = dist,
                st.Apert = apert,
                st.MeasId = measid
            };

            dataContext.MeasResults.InsertOnSubmit(st);
            dataContext.SubmitChanges();
        }
    }
}

Я сделал три измерения и зарегистрировал их, но в базе данных столбец MeasID для всех них пуст. Значением по умолчанию для столбца MeasID является 1.

Что я делаю не так?

1 Ответ

1 голос
/ 29 мая 2019

Попробуй так:

var measid = dataContext.MeasResults.Select(a=>a.MeasId).DefaultIfEmpty().Max(p => p ?? 0) + 1;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...