Помощь, необходимая для LINQ К операциям SQL (вставить/обновить) с вложенным POCO's

Вы не читаете HTTP-запрос от клиента, а просто отправляете ответ и закрываете соединение. Но закрытие сокета, пока есть еще данные для чтения, приведет к возврату соединения обратно клиенту, и это то, что вы увидите в Chrome с помощью ERR_CONNECTION_RESET. Другие браузеры могут вести себя по-другому, и это также проблема синхронизации, если браузер может отобразить ответ перед обработкой сброса.

Чтобы исправить это, сначала прочитайте полный запрос от клиента, прежде чем закрыть сокет.

7
задан mwjackson 19 November 2008 в 10:36
поделиться

5 ответов

Я предполагаю, что проблема находится в Вашем методе тестирования. Вы создали Репозиторий с DataContext, но Вы сделали Ваш, отправляет с другим.

[Test]
public void AddSelectionShouldAddSelectionToMarket()
{
    Market market = (Market) new Repository().GetMarket(1);

    Selection selection = new Selection();
    selection.Market = market;

    new Repository().AddSelection(selection);

    Assert.IsTrue(selection.SID > 0);
}

Создают Репозиторий и используют его в методе тестирования.

[Test]
public void AddSelectionShouldAddSelectionToMarket()
{
    Repository repository = new Repository();
    Market market = (Market) repository.GetMarket(1);

    Selection selection = new Selection();
    selection.Market = market;

    repository.AddSelection(selection);

    Assert.IsTrue(selection.SID > 0);
}
4
ответ дан 7 December 2019 в 01:28
поделиться

Просто предположение, но это могло бы быть здесь

public Market Market
{
    get { return this.market; }
    set
    {
        this.market = value;
        this.mID = value.MID;
    }
}

, Что происходит, когда значение, которое Вы устанавливаете на Рынок, является пустым? Последняя строка этого будет недопустима начиная с него привычка быть в состоянии разрешить пустой указатель. MID. Возможно, Вам нужно это для Вашего метода set:

    set
    {
        this.market = value;
        this.mID = (value == null) ? null : value.MID;
    }

Также Ваш MID должен был бы быть nullable

int? MID
2
ответ дан 7 December 2019 в 01:28
поделиться

Для Вашей новой проблемы; проблема происходит на пустом присвоении на свойство выбора Price. Вы делали это своим кодом? Вы могли снова дать часть кода, что Вы получили исключение? Я имею в виду присвоение на объект Price...

Редактирование согласно комментарию: Я предполагаю, что это из-за пустого исключения управления, как мы упомянули прежде на сообщении GeekyMonkeys. В инициализации класса Выбора свойство Price должно установить как пустой указатель, но когда пустому указателю присваивают, это бросает нулевую ссылку. Таким образом, необходимо сделать пустое управление в наборе ценового свойства.

private List<Price> prices
[DataMember]
public List<Price> Prices
{
    get { return this.prices; }
    set
    {
        if(value != null)
        {
          this.pricess = value;
          // For LINQ             
          foreach (Price price in prices)
          {
            price.MID = mID;
            price.Selection = this;
          }
       }
    }
}
2
ответ дан 7 December 2019 в 01:28
поделиться

Я предложил бы отправить Ваш код в Sidar хорошо. Он - хороший парень и укажет на Вас в правильном направлении. Или, по крайней мере, отправьте комментарий к его блогу, указывающему на него на Ваш вопрос здесь.

0
ответ дан 7 December 2019 в 01:28
поделиться

Я знаю, что прошло много времени, и вы, вероятно, уже решили проблему, но, возможно, нет ...

Я предполагая, что ваша структура данных подобна этой:

Market
======
Market_ID      int not null identity (1, 1)


Selection
=========
Selection_ID   int not null identity (1, 1)
Market_ID      int (FK to Market)
Selection_Name varchar(50)

Чтобы добавить новый рынок и новый выбор одновременно:

Selection selection = new Selection();
Market market = new Market();

market.Selections.Add(selection);
DataContext.Markets.InsertOnSubmit(market);
DataContext.SubmitChanges();

Чтобы добавить новый выбор к существующему рынку:

Selection selection = new Selection();
Market market = DataContext.Markets.Where(a => a.Market_ID == 7).Single();

market.Selections.Add(selection);
DataContext.SubmitChanges();

Чтобы обновить первый выбор на рынке:

Selection selection = DataContext.Markets.Where(a => a.Market_ID == 7).Selections.First();

selection.Selection_Name = "New Name";
DataContext.SubmitChanges();
2
ответ дан 7 December 2019 в 01:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: