Службы данных WCF: SaveChanges: при обработке этого запроса произошла ошибка - PullRequest
2 голосов
/ 02 августа 2010

Я получаю исключение «Произошла ошибка при обработке этого запроса», когда я пытаюсь сохранить некоторые изменения из моего WPF-приложения в Службу данных WCF. Загрузка всех записей работает нормально, но сохранение их не работает.

Надеюсь, что вы можете помочь.

public partial class MainWindow : Window
{
    private DBEntities _dbEntities;

    public MainWindow()
    {
        InitializeComponent();
        _dbEntities = new DBEntities(new Uri("http://localhost:49256/DataService.svc/"));
    }

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        foreach (var user in _dbEntities.User)
        {
            treeView1.Items.Add(user.Name);
        }
    }

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        try
        {
            _dbEntities.MergeOption = MergeOption.AppendOnly;
            User user = new User(){Age = 1, ID = Guid.NewGuid(), Name = "Test"};
            _dbEntities.AddToUser( user);
            _dbEntities.SaveChanges();
        } catch(Exception ex)
        {
            MessageBox.Show(ex.Message+ ex.InnerException.Message);
        }
    }
}

Больше нет исключений.

После установки UseVerboseErrors = true появляется следующее сообщение об исключении:

Невозможно обновить EntitySet 'User', так как он имеет DefiningQuery и в элементе нет элемента для поддержки текущей операции.

Ответы [ 2 ]

1 голос
/ 02 августа 2010

Вы можете получить эту ошибку, если ваша базовая таблица 'User' не имеет идентифицированного первичного ключа .Как настроена ваша сущность (EF, LINQ-to-SQL и т. Д.) И каков ваш базовый репозиторий (SQL и т. Д.)?Я обновлю свой ответ соответственно.Надеюсь, это поможет!

0 голосов
/ 25 октября 2016
[ServiceBehavior(IncludeExceptionDetailInFaults=true)]
public class WcfDataService1 : DataService<PhaetonServiceEntities>
{
    // This method is called only once to initialize service-wide policies.
    public static void InitializeService(DataServiceConfiguration config)
    {
        // TODO: set rules to indicate which entity sets and service operations are visible, updatable, etc.
        // Examples:
         config.SetEntitySetAccessRule("Cities", EntitySetRights.All);
        // config.SetServiceOperationAccessRule("MyServiceOperation", ServiceOperationRights.All);
        config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;
    }
}
...