powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Linq to Object возвращает null
12 сообщений из 12, страница 1 из 1
Linq to Object возвращает null
    #37272776
Fantastick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Никак не могу понять как отловить, что linq to object возвращает пустой набор, а точнее null.

Код: plaintext
1.
2.
3.
4.
5.
6.
var q = from c in entity.contact
            where c.contact_id == (int)objectID
            select c;

contactBindingSource.DataSource = q; //~~~ тут System.NullReferenceException


вот как мне отловить, что у меня пустой q(query)?

Заранее спасибо всем откликнувшимся.
...
Рейтинг: 0 / 0
Linq to Object возвращает null
    #37272785
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может .ToList();
...
Рейтинг: 0 / 0
Linq to Object возвращает null
    #37272823
Fantastick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пробовал, не помогает
...
Рейтинг: 0 / 0
Linq to Object возвращает null
    #37272861
Вестник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у вас скорее всего либо entity, либо entity.contact пустые во время выполнения запроса (не путать с моментом создания запроса)
...
Рейтинг: 0 / 0
Linq to Object возвращает null
    #37272891
Fantastick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а что тогда делать?
У меня есть форма - список контактов, у нее есть кнопка добавить контакт:
Код: plaintext
1.
(new fmContactCard(this.ParentForm, entityConnection, null, objectOperations.ooAdd)).ShowDialog();


и конструктор
Код: plaintext
1.
2.
3.
4.
5.
public fmContactCard(Form parent, EntityConnection entityConnection, object objectID, objectOperations objectOperation)
: base(parent, entityConnection, objectID, objectOperation)
{
InitializeComponent();
}



и соответственно обновление данных происходит так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
private void fmContactCard_Load(object sender, EventArgs e)
{
var q = from c in entity.contact
where c.contact_id == (int)objectID
select c;

contactBindingSource.DataSource = q; //~~~ тут System.NullReferenceException
}

Т.е. я хочу обновлять мой source не зависимо от того, передал ли я objectID или нет, т.е. у меня набор будет или пустой или при редактировать соответствовать objectID
...
Рейтинг: 0 / 0
Linq to Object возвращает null
    #37272912
Вестник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я не понял, чего вы хотите.
меня убило на месте ваше желание передавать null и приводить его к int

при редактировать соответствовать objectIDэту фразу курил три раза, но так и не вкурил

попробуйте так: where c.contact_id == (objectID == null ? -1 : (int)objectID)
...
Рейтинг: 0 / 0
Linq to Object возвращает null
    #37273006
Fantastick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вестникя не понял, чего вы хотите.
меня убило на месте ваше желание передавать null и приводить его к int

при редактировать соответствовать objectIDэту фразу курил три раза, но так и не вкурил

попробуйте так: where c.contact_id == (objectID == null ? -1 : (int)objectID)

Это фраза означает что оператор вернет мне или одну строчку, потому что карточка редактирования она чтоб редактировать одну запись(объект), ключевую, например контакт, а у контактка в свою очередь есть связь 1 ко многим, например контакт и фотки контакта.
...
Рейтинг: 0 / 0
Linq to Object возвращает null
    #37273009
Fantastick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вестникя не понял, чего вы хотите.
меня убило на месте ваше желание передавать null и приводить его к int

при редактировать соответствовать objectIDэту фразу курил три раза, но так и не вкурил

попробуйте так: where c.contact_id == (objectID == null ? -1 : (int)objectID)

попробовал, к сожалению не помогло:
Ссылка на объект не указывает на экземпляр объекта.
...
Рейтинг: 0 / 0
Linq to Object возвращает null
    #37273035
Fantastick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разобрался я в проблеме:
Ситуация следующая, я ее немного или много, не понимаю но решение вот такое:
Значит есть у нас contact и contactDetail соответственно связь 1 ко многим

так вот:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
if (objectOperation == objectOperations.ooEdit)
{
  contactBindingSource.DataSource = getData();
}
else if(objectOperation == objectOperations.ooAdd)
{
  contactBindingSource.AddNew();
}

objectID = (contactBindingSource.Current as contact).contact_id;

contactDetailBindingSource.DataSource = from cntDetail in entity.contactDetail                                               
                                        where cntDetail.contact_id == (objectID == null ? -1 : (int)objectID)                                               
                                        select cntContact;


Почему это работает, я не знаю деталей, но я знаю закономерность, при добавлении objectOperations.ooAdd, contactBindingSource.AddNew() создает пустую запись с (contactBindingSource.Current as contact).contact_id = 0 и только если where cntDetail.contact_id == 0, тогда все нормально, конечно записей для такого условия нет, т.е. набор пустой, но ексепшена нет, если же я хотя бы сделаю where cntDetail.contact_id == -1 то ловим ексепшен.
Я так подозреваю, что я что-то недопонял в концепции EF и Linq, если кто может объяснить заранее спасибо.
...
Рейтинг: 0 / 0
Linq to Object возвращает null
    #37275328
_dirty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FantastickНикак не могу понять как отловить, что linq to object возвращает пустой набор, а точнее null.

Код: plaintext
1.
2.
3.
4.
5.
6.
var q = from c in entity.contact
            where c.contact_id == (int)objectID
            select c;

contactBindingSource.DataSource = q; //~~~ тут System.NullReferenceException


вот как мне отловить, что у меня пустой q(query)?

Заранее спасибо всем откликнувшимся.

Код: plaintext
q.Count() == 0
...
Рейтинг: 0 / 0
Linq to Object возвращает null
    #37275336
_dirty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
можно проверять на null еще таким образом (но это так, синтаксический сахар):
Код: plaintext
1.
objectID ?? -1
...
Рейтинг: 0 / 0
Linq to Object возвращает null
    #37275389
Вестник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
лень проверять, но так скорее всего не получится, будет ошибка приведения типов
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Linq to Object возвращает null
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]