2011-02-06 1 views
0

Я работаю над приложением silverlight, которое позволяет пользователям заполнять общие формы.Запрос Silverlight 4 с DomainContext для новой записи

На моей главной странице.xaml У меня есть 4 кнопки, которые позволяют пользователю создавать новую форму. У меня есть следующий код в обработчике событий щелчка

FormsDS t = new FormsDS(); 
     Store s = new Store(); 
     var i = (from j in t.Stores 
       where j.StoreManager.Contains(WebContext.Current.User.Name) 
       select j.ID); 


     form newxferform = new form 
     { 
      xfertype = 1, 
      createdate = DateTime.Now, 
      createdby = WebContext.Current.User.Name, 
      assignedto = WebContext.Current.User.Name, 
      Store = Int32.Parse(i.ToString()), 
      xferfrom = Int32.Parse(i.ToString()), 
      appovalstatus = 1, 
      ronum = "0", 
      hide = 0 
     }; 

     t.forms.Add(newxferform); 
     t.SubmitChanges(createop => 
      { 
       Uri target = new Uri("/views/TransferForm.xaml?FormID=" + newxferform.id, UriKind.Relative); 
       ContentFrame.Navigate(target); 
      }, null);    

FormsDS - это мой текстовый файл. Я хотел бы взять значение i из запроса вверху и присвоить его значениям Store и xferfrom в newxferform. Однако когда я запускаю его, я получаю «Строка ввода не в правильном формате». Если я не делаю Int32.Parse, я получаю сообщение «Невозможно неявно преобразовать тип« System.Collections.Generic.IEnumerable »в«? Int ». Я не понимаю этого вообще, поскольку все столбцы в db не равны нулю. Я попытался написать try catch для обработки нулевых значений, но я не могу понять, почему значение возвращается как null, имя пользователя точно соответствует столбцу storemanager. Я должен получить результат.

Я пробовал несколько разных способов, и я не могу понять.

Мне просто нужно взять поле идентификатора из таблицы, называемой хранилищами, где colM StoreManager равен текущему зарегистрированному пользователю и назначить его в поле store и xferfrom в таблице, называемой формами, когда я создаю форму.

То, что я думаю, делает это сложнее, чем хотелось бы, так это то, что у меня нет DataContext, определенного в xaml на странице. Это просто навигационная страница. Данные обрабатываются на страницах, загружаемых в навигационную рамку.

Любая помощь была бы принята с благодарностью.

Спасибо,

Нил

+0

Можете ли вы показать определения классов, или Entity Framework (или любой другой), модель на стороне сервера? Или, быстрее, какой тип формы. Магазин и форма.xferfrom? –

+0

Обе формы. Store и form.xferfrom должны быть int. Идентификатор в моей таблице магазинов является значением int, а не автозаполненным и представляет собой хранилище для моих магазинов. My FormsDS - это мой DomainDataSource, и он основан на инфраструктуре сущности. Благодаря! –

ответ

0

Проблема заключается в том, что запрос LINQ выше производит IEnumerable<int>, а не один int.

Чтобы решить эту проблему, замените i заявление следующего содержания:

var i = 
    t.Stores 
    .FirstOrDefault(j => j.StoreManager.Contains(WebContext.Current.User.Name)) 
    .ID; 

Или, если вам нравится, как LINQ:

var i = (from j in t.Stores 
      where j.StoreManager.Contains(WebContext.Current.User.Name) 
      select j.ID) 
     .FirstOrDefault(); 

(Вы должны заменить FirstOrDefault с Single если точно пункта или SingleOrDefault, если или i ожидается.

НТН