SqlDataAdapter отличается от. net core и fullframework - PullRequest
0 голосов
/ 17 марта 2020
string sql = "SELECT * FROM MYTABLE";
string conn = "Data Source=myserver.cloud;Initial Catalog=MYDB;Persist Security Info=True;User ID=myuser;Password=mypassword;Pooling=True;Application Name=xxx;Workstation ID=yyy";
DataSet ds = new DataSet();

using (SqlDataAdapter sqlDa = new SqlDataAdapter(sql, conn))
{
    sqlDa.MissingSchemaAction = MissingSchemaAction.AddWithKey;
    sqlDa.Fill(ds);
}

этот код (тот же код, та же строка подключения) в двух чистых проектах (первый ". net core 3.1", второй "fullframework 4.7")

... возвращает набор данных со столбцом первичного ключа, который имеет атрибут «только для чтения»:

- set to "true" for the code compiled in fullframework
- set to "false" for the code compliled in .net core 3.1 (the columns doesn't have details about identity, seed as well)

Примечание: таблица имеет первичный ключ, int32, indentity

Как обычно, «fullframework» ссылается на встроенный файл System.Data.dll, код «.core» ссылается на этот пакет (System.Data.SqlClient 4.8.1) для использования Ado net objects

Мне абсолютно необходимо получить этот набор данных с этим атрибутом установить в "истину" есть ли хитрость? Любая идея, как исследовать дальше?

Я заметил, что в fullframework, удаление sqlDa.MissingSchemaAction = MissingSchemaAction.AddWithKey; атрибут readonly столбца первичного ключа установлен на «false», так что я полагаю, эта строка, которая выполняет работу в любом случае в коде ". net core" этого не происходит (без разницы с или без) sqlDa.MissingSchemaAction = MissingSchemaAction.AddWithKey;

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