У меня есть схема базы данных (MySql), представленная как служба данных / OData, которая запрашивается моим клиентом Silverlight с помощью Linq. Вот эта модель:
Столбцы Level и Application являются значениями Int, ссылающимися через внешний ключ на таблицы lookuplevel и lookuppid соответственно.
Итак, запись в таблице logstest может выглядеть следующим образом:
ID:35
Date: 2012-02-29
Level: 1
Application: 1
Message: MyMessage
Exception: MyException
ReverseOrder: 56 (don't mind this column)
И мы могли бы иметь на уровне поиска :
ID: 1
String: Warning
А в lookuppid
ID: 1
String: Product A
Как вы можете видеть, столбцы Level и Application фактически сопоставлены со значением в указанной там таблице.
Теперь на стороне клиента (Silverlight) я получаю содержимое таблицы logstest через запрос linq.
public void LoadErrors()
{
var linqQuery = (from e in _myEntities.logstests
select e);
AsyncCallback GetDataComplete = new AsyncCallback(MyCallback);
((DataServiceQuery<logstest>)linqQuery).BeginExecute(GetDataComplete, linqQuery);
}
private void MyCallback(IAsyncResult asyncResult)
{
DataServiceQuery<logstest> query = asyncResult.AsyncState as DataServiceQuery<logstest>;
foreach (logstest error in e.Query.EndExecute(e.Result))
{
Error newError = new Error
{
Date = error.Date,
Level = error.lookuplevel.String,
Application = error.lookuppid.String,
Message = error.Message,
Exception = error.Exception
};
}
// Do more stuff...
}
Ошибка - это пользовательский класс, который связан с сеткой данных и отображает каждое поле в отдельном столбце.
Очевидно, что для столбцов Уровень и Приложение я не хочу отображать индекс значения, на которое они ссылаются, но само значение (т. Е. Для уровня Я хочу отобразить Предупреждение, а не 1).
Проблема в том, что оба значения error.lookuplevel и error.lookuppid равны нулю, и я понятия не имею, почему.
Есть ли где-нибудь гоча, о которой я не знаю?
Заранее спасибо!