Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Новый топик    Ответить
 LINQ to SQl +WCF ошибка передачи добавленных сложных свойств!  [new]
OldWoker
Member

Откуда: из далёка
Сообщений: 437
Привет всем! К сожалению эта ошибка то появляется то нет. Описание ситуации. Имеем модель (DAL) LINQ-to-SQL в которой присутствую две таблицы MasterTable и DetailTable. Добавляется свойство в частичный класс DeatilTable
        private string _number = "";
        [DataMember]
        public string NumberMaster
        {
            get
            {
                _number = "";
                if (this.MasterTable != null)
                    _number = this.MasterTable.Number;
                return _number;

            }
            set { _number = value; }
        }

пишем сервис где возвращаем нужные записи DeatilTable и получаем (не всегда) ошибку

При передаче через wcf получаем ошибку

System.ObjectDisposedException occurred
Message="Доступ к ликвидированному объекту невозможен.\r\nИмя объекта: \"DataContext accessed after Dispose.\"."
Source="System.Data.Linq"
ObjectName="DataContext accessed after Dispose."
то есть свойство начало "заполнятся" после отправки результат на клиент!

Кто ни будь с подобным встречался?
3 июн 09, 15:34    [7261131]     Ответить | Цитировать Сообщить модератору
 Re: LINQ to SQl +WCF ошибка передачи добавленных сложных свойств!  [new]
Roman S. Golubin
Member

Откуда: 140002
Сообщений: 11541
OldWoker,

Время жизни DataContext проверяйте, а то вы к нему обращаетесь после того, как он уже помечен на удаление... Нарисуйте sequence diagram для трех объектов - DataContext, WCF Service и Client - проще жить будет. А приведенный кусок кода ни о чем не говорит - совершенно непонятно, что и в какой последовательности происходит.
4 июн 09, 04:19    [7263234]     Ответить | Цитировать Сообщить модератору
 Re: LINQ to SQl +WCF ошибка передачи добавленных сложных свойств!  [new]
OldWoker
Member

Откуда: из далёка
Сообщений: 437
Roman S. Golubin
OldWoker,

Время жизни DataContext проверяйте, а то вы к нему обращаетесь после того, как он уже помечен на удаление... Нарисуйте sequence diagram для трех объектов - DataContext, WCF Service и Client - проще жить будет. А приведенный кусок кода ни о чем не говорит - совершенно непонятно, что и в какой последовательности происходит.

Вот и мне не понятно.
Завели у Entity свойство пометили его [Datamember] в каком случае передастся клиенту ?
Когда (в какой момент) происходит сериализация ?
ведь все выражения обязательно кончаются ToList и значит все свойств заполнены?

using (DataContext db = new DataContext())
{

return db.DetailTables.ToList();

}
4 июн 09, 12:43    [7264682]     Ответить | Цитировать Сообщить модератору
 Re: LINQ to SQl +WCF ошибка передачи добавленных сложных свойств!  [new]
Roman S. Golubin
Member

Откуда: 140002
Сообщений: 11541
Кстати, сейчас еще раз взглянул на первый кусок кода...

        private string _number = "";

        [DataMember]
        public string NumberMaster
        {
            get
            {
                _number = "";
                if (this.MasterTable != null)
                    _number = this.MasterTable.Number;
                return _number;
            }
            set { _number = value; }
        }

Для какой цели используется метод NumberMaster.set, если при попытке получения данных из _number его значение всегда сбрасывается? Метод get, имхо, вообще ни при каких обстоятельствах не должен менять состояние объекта...

а по поводу ошибки - можете создать небольшой проект, в котором эта ошибка воспроизводится и кинуть мне в почту на посмотреть? Почта grominc@gmail.com
5 июн 09, 05:40    [7268112]     Ответить | Цитировать Сообщить модератору
 Re: LINQ to SQl +WCF ошибка передачи добавленных сложных свойств!  [new]
Roman S. Golubin
Member

Откуда: 140002
Сообщений: 11541
Хмм.... в догонку...

                if (this.MasterTable != null)
                    _number = this.MasterTable.Number;

MasterTable в данном случае не завязана на DataContext ?? Что из себя представляет MasterTable?
5 июн 09, 05:43    [7268114]     Ответить | Цитировать Сообщить модератору
 Re: LINQ to SQl +WCF ошибка передачи добавленных сложных свойств!  [new]
OldWoker
Member

Откуда: из далёка
Сообщений: 437
Roman S. Golubin
Хмм.... в догонку...

                if (this.MasterTable != null)
                    _number = this.MasterTable.Number;

MasterTable в данном случае не завязана на DataContext ?? Что из себя представляет MasterTable?


К сообщению приложен файл. Размер - 0Kb
5 июн 09, 10:11    [7268423]     Ответить | Цитировать Сообщить модератору
 Re: LINQ to SQl +WCF ошибка передачи добавленных сложных свойств!  [new]
OldWoker
Member

Откуда: из далёка
Сообщений: 437
OldWoker,

обе таблицы находятся в DataContext!!!
5 июн 09, 10:12    [7268426]     Ответить | Цитировать Сообщить модератору
 Re: LINQ to SQl +WCF ошибка передачи добавленных сложных свойств!  [new]
Roman S. Golubin
Member

Откуда: 140002
Сообщений: 11541
OldWoker,

надоело на пальцах. Выкладывай контракты, иначе можно гадать еще несколько дней :))
5 июн 09, 11:01    [7268667]     Ответить | Цитировать Сообщить модератору
 Re: LINQ to SQl +WCF ошибка передачи добавленных сложных свойств!  [new]
OldWoker
Member

Откуда: из далёка
Сообщений: 437
Roman S. Golubin
OldWoker,

надоело на пальцах. Выкладывай контракты, иначе можно гадать еще несколько дней :))

OK! За выходные сделаю маленький пример на Northwind и выложу!
5 июн 09, 14:10    [7269927]     Ответить | Цитировать Сообщить модератору
 Re: LINQ to SQl +WCF ошибка передачи добавленных сложных свойств!  [new]
SeVa
Member [заблокирован]

Откуда: Москва
Сообщений: 4324
Весьма странная конструкция.В каждой деталировке нужно мастера таскать.Зачем это нужно?
5 июн 09, 16:10    [7270691]     Ответить | Цитировать Сообщить модератору
 Re: LINQ to SQl +WCF ошибка передачи добавленных сложных свойств!  [new]
OldWoker
Member

Откуда: из далёка
Сообщений: 437
SeVa
Весьма странная конструкция.В каждой деталировке нужно мастера таскать.Зачем это нужно?

Пример тестовый. Более реальный случай - при передаче вам нужно не только id партнёра но и его название
[DataMember]
public string PartnerName{
get {

this.Partner.Name;
}
}
5 июн 09, 16:33    [7270835]     Ответить | Цитировать Сообщить модератору
 Re: LINQ to SQl +WCF ошибка передачи добавленных сложных свойств!  [new]
bured
Member

Откуда:
Сообщений: 24297
м.б. поможет
5 июн 09, 16:33    [7270838]     Ответить | Цитировать Сообщить модератору
 Re: LINQ to SQl +WCF ошибка передачи добавленных сложных свойств!  [new]
OldWoker
Member

Откуда: из далёка
Сообщений: 437
OldWoker
Roman S. Golubin
OldWoker,

надоело на пальцах. Выкладывай контракты, иначе можно гадать еще несколько дней :))

OK! За выходные сделаю маленький пример на Northwind и выложу!

Выполняю обещание. Тест во вложении. Не забудьте исправить web.config!

К сообщению приложен файл (WPFUpTest.rar - 39Kb) cкачать
6 июн 09, 19:23    [7273111]     Ответить | Цитировать Сообщить модератору
 Re: LINQ to SQl +WCF ошибка передачи добавленных сложных свойств!  [new]
OldWoker
Member

Откуда: из далёка
Сообщений: 437
bured
м.б. поможет

Спасибо! Почитаю
6 июн 09, 19:42    [7273135]     Ответить | Цитировать Сообщить модератору
 Re: LINQ to SQl +WCF ошибка передачи добавленных сложных свойств!  [new]
OldWoker
Member

Откуда: из далёка
Сообщений: 437
OldWoker
bured
м.б. поможет

Спасибо! Почитаю

Помогло :-)
9 июн 09, 10:20    [7279364]     Ответить | Цитировать Сообщить модератору
 Re: LINQ to SQl +WCF ошибка передачи добавленных сложных свойств!  [new]
bured
Member

Откуда:
Сообщений: 24297
OldWoker,

напишите подробно, что конкретно.
9 июн 09, 12:17    [7280152]     Ответить | Цитировать Сообщить модератору
 Re: LINQ to SQl +WCF ошибка передачи добавленных сложных свойств!  [new]
OldWoker
Member

Откуда: из далёка
Сообщений: 437
OldWoker
bured
м.б. поможет

Спасибо! Почитаю

Почитал. Там разъяснён этот случай.
11 июн 09, 12:17    [7289507]     Ответить | Цитировать Сообщить модератору
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Ответить