2013-06-17 1 views
2

У меня есть библиотека обертки для API, которая запрашивает определенные пользователем базы данных. В настоящее время он хорошо работает с DataSet, DataTable, DataRow и т. Д. Я хотел бы преобразовать его в переносимую библиотеку для использования на других платформах, но эти классы не являются частью переносного подмножества.Существует ли переносимый способ представления произвольной таблицы базы данных (структура известна только во время выполнения), аналогично тому, как это делает DataSet/DataTable?

Есть ли что-либо, что даже отдаленно эквивалентно этим классам? Главное, что моя библиотека делает с DataSet, - это передача данных в слой домена, который заполняет бизнес-объекты.

Что мне нужно - это способ передать произвольное представление таблицы базы данных из моей библиотеки в программу, вызывающую мою библиотеку, которая работает в какой-либо форме переносной библиотеки, в идеале все подмножества (Xbox не требуется), но что-то лучше что ничего у меня нет сейчас.

фон

Это поток данных, что я борюсь с

User Defined Database <==> My Library <==> User C# Code 

АНИ, которая доступна отточен. Моя библиотека делает запрос намного проще, но поскольку я не знаю ничего о структуре во время разработки, я анализирую возвращаемые данные из API и помещаю их в объекты DataSet. Конечный пользователь анализирует данные DataSets для заполнения своих объектов домена. Я ищу способ сделать это для портативной библиотеки без DataSet.

Пример использования моей библиотеки, это также степень особенностей DataSet/Table/Строка, которые используются:

var myLib = new MyLib(parms); 
Find request = myLib.MakeFind(); 
request.AddSearch("userID", 12); 
DataSet response = request.Execute() 

var user = new User(); 
user.ID = int.Parse(response.Tables[0].Rows[0]["userID"].ToString()); 
user.FirstName = response.Tables[0].Rows[0]["FIRST_NAME"].ToString(); 
user.LastName = response.Tables[0].Rows[0]["LAST_NAME"].ToString(); 

foreach (DataRow relatedRow in dr.GetChildRows("Logs")) 
{ 
    var lg = new LogEntry() { ID = int.ParserelatedRow["ID"].ToString()), Text = relatedRow["Text"].ToString(); }; 
    user.Logs.Add(lg); 
} 
+0

'DataSet' - довольно мощная модель. Вы ищете как можно более близкое сокращение замены? Или вы ищете что-нибудь? Количество способов хранения данных довольно велико. – Guvante

+0

@Guvante Я только что обновил сообщение, чтобы включить наиболее сложное использование возвращаемого DataSet. – Nate

+2

Можете ли вы точно описать, что будет отсутствовать при простой сериализации (XML/JSON/etc.)? Из того, что я читаю, похоже, вам просто нужно преобразовать данные в нечто портативное, а затем в объекты - простые русификаторы сериализации. Может быть, вы можете начать там и добавить все, что отсутствует. –

ответ

2

Я хотел бы предложить базовую сериализации (XML/JSON) - это делает портативные данные, и он доступен для использования практически на любой платформе, о которой вы можете подумать. XML может быть несколько более распространенным, чем JSON, но вы всегда можете использовать подход, который делает WebAPI - позвольте вызывающему абоненту решить, какой из них они хотят, по умолчанию, если они не выбрали один.

Сериализация/десериализация данных в XML или JSON тривиальна в .NET, если вы не делаете ничего слишком сумасшедшего. Дезертирование на других платформах должно быть простым, но вы, вероятно, можете найти примеры для любой среды программирования с помощью быстрого поиска в Интернете.

 Смежные вопросы

  • Нет связанных вопросов^_^