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;