Службы данных WCF SaveChanges (): «Ресурс не найден для сегмента» - PullRequest
2 голосов
/ 21 июня 2010

Моя строка ctx.SaveChanges(); в моем контроллере DutyController.cs выдает следующее исключение при попытке отредактировать мой объект Duty.

System.Data.Services.Client.DataServiceClientException:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
  <code></code>
  <message xml:lang="en-US">Resource not found for the segment 'Duty'.</message>
</error>

В представлении «Мой режим редактирования» есть раскрывающийся список «Случаи».Guid OccasionId успешно связан с моделью Duty при отправке.

Models \ Duty.cs

[MetadataType(typeof(DutyMetadata))]
public partial class Duty
{
    private class DutyMetadata
    {
        ...

        [Required]
        [UIHint("OccasionId")]
        [Display(Name = "Occasion")]
        public object OccasionId { get; set; }
    }
}

Views \ Duty \ Edit.aspx

<%: Html.EditorForModel() %>

Представления \ Shared \ DisplayTemplates \ OccasionId.ascx

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Guid>" %>
<%: Html.DropDownList(string.Empty, new SelectList(ViewData["occasions"] as IEnumerable<Web.VolunteerData.Occasion>, "Id", "Designation", Model), "Select Occasion")%>

Controllers \ DutyController.cs

//
// GET: /Duty/Edit/5

public ActionResult Edit(Guid id)
{
    var Model = (from Duty d in ctx.Duties where d.Id == id select d).Single();
    ViewData["occasions"] = from Occasion o in ctx.Occasions orderby o.Designation select o;
    return View(Model);
}

//
// POST: /Duty/Edit/5

[HttpPost]
public ActionResult Edit(Duty Model)
{
    ctx.AttachTo("Duty", Model);
    ctx.UpdateObject(Model);
    ctx.SaveChanges();
    return RedirectToAction("Index");
}

Почему SaveChanges () вызывает исключение "Ресурс не найден для сегмента ..."?

Есть ли лучший способ сделать то, что я пытаюсь сделать?

1 Ответ

4 голосов
/ 23 июня 2010

Я думаю, что это дубликат другого вопроса здесь, но в любом случае.Проблема в вызове AttachTo.Первым параметром этого метода является имя набора сущностей (не тип сущности).В вашем случае набор сущностей называется «Обязанности».Так что просто используйте «Обязанности» в качестве параметра AttachTo, и он должен работать.В следующий раз, пожалуйста, опубликуйте все сообщение об исключении, так как оно, скорее всего, содержит название оскорбительного «сегмента» и сделает проблему намного яснее.

...