Как вставить запись с LINQ и C# и возвратить Первичный ключ той записи

discovery.query является асинхронной функцией, поэтому переменная filterStr не будет определена, пока не достигнет обратного вызова. Вам нужно будет использовать filterStr в обратном вызове discovery.query или использовать async/await в блоке try/catch для return results.

Асинхронные функции работают, позволяя выполнять их без прерывания потока. Вот почему выполняется console.log(2.), а затем спустя некоторое время console.log(1.) выполняется внутри обратного вызова (из-за функции asynchronous требуется некоторое время для достижения обратного вызова). Вы пытаетесь что-то сделать synchronously, и для этого вам нужно реорганизовать свой код. Нажмите здесь для получения дополнительной информации об асинхронном и синхронном выполнении.

Внутри обратного вызова :

getSimilarCasesFromID: function(req, res, next) {
  const queryString = "id::"+req.params.id; 
  const params = {
    'query': queryString,
    'environment_id':environmentId,
    'collection_id': collectionId,
    'configuration_id': configurationId,
    return: 'enriched_text'
  };

  const filterStrArr = [];

  const FILTER_CONCEPT = "enriched_text.concepts.text:";

  discovery.query(params, (error, results) => {
    if (error) {
      next(false, err, []);
    } else {
      let filterStr ="";

      const conceptSize = results.results[0].enriched_text.concepts.length;

      let concepts = {};
      for (let i = 0; i < conceptSize; i++) {
        concepts[i] = { 
          text: results.results[0].enriched_text.concepts[i].text,
          relevance: results.results[0].enriched_text.concepts[i].relevance
        };

        filterStrArr[i].push(FILTER_CONCEPT + concepts[i].text);
      }

      filterStr = filterStrArr.join(",");
      console.log(filterStr);

      // utilize filterStr here

      next(true, [], []);
    }
  });
},

С async/await :

getSimilarCasesFromID: async function(req, res, next) {
  const queryString = "id::"+req.params.id; 
  const params = {
    'query': queryString,
    'environment_id':environmentId,
    'collection_id': collectionId,
    'configuration_id': configurationId,
    return: 'enriched_text'
  }

  const filterStrArr = [];

  const FILTER_CONCEPT = "enriched_text.concepts.text:";

  let filterStr ="";

  try {
    const results = await discovery.query(params);

    const conceptSize = results.results[0].enriched_text.concepts.length;

    let concepts = {};
    for (let i = 0; i < conceptSize; i++) {
      concepts[i] = { 
        text: results.results[0].enriched_text.concepts[i].text,
        relevance: results.results[0].enriched_text.concepts[i].relevance
      };

      filterStrArr[i].push(FILTER_CONCEPT + concepts[i].text);
    }

    filterStr = filterStrArr.join(",");
    console.log(filterStr);

    // utilize filterStr here

    next(true, [], []);       

  } catch(err) {
     next(false, err, []);
  }
},

19
задан Ebircsa 6 November 2008 в 14:32
поделиться

2 ответа

Значение первичного ключа будет в том свойстве после SubmitChanges ().

MyTable record = new MyTable();
record.Name = "James Curran";
db.MyTable.InsertOnSubmit(record);
db.SubmitChanges();
Console.WriteLine("record inserted as ID : {0}", record.Id);
32
ответ дан 30 November 2019 в 03:25
поделиться

Любое поле с AutoGeneratedValue=true будет заполнено в том, после того, как та запись будет отправлена базе данных dc. SubmitChanges ()

1
ответ дан 30 November 2019 в 03:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: