2013-06-02 4 views
0

Я пытаюсь добавить объект к моему лицу, но он дает мне ошибку: «Not Found» вот мой код:WCF Data Services AddObject

DataServiceContext dtx = new DataServiceContext(new Uri("http://localhost/website2/wcfservice1.svc/")); 
    dtx.Credentials = System.Net.CredentialCache.DefaultCredentials; 
    ServiceReference1.Car car = new ServiceReference1.Car(); 
    car.CarName = "aaa"; 
    car.CarModel = "111"; 

    dtx.AddObject("Car", car); 

    dtx.SaveChanges(); 

Я попытался «Тачки» и " Car "и в AddObject, но все же не помогли .. мой столбец CARID является столбцом PKEY в базе данных.

Пожалуйста, помогите. Благодарю.

+0

Что имена ваша сущность устанавливает? I.e., когда вы переходите к http: //.../wcfservice1.svc, каковы имена, которые появляются? –

+0

его имя отображается как «Автомобили» – RHM

+0

Хмм, и 'dtx.AddObject (« Автомобили », автомобиль);' дает вам ту же ошибку? И эта ошибка составляет 404 с сервера? Не могли бы вы использовать инструмент, например Fiddler (или любую другую программу мониторинга веб-трафика), чтобы узнать, что такое URI исходящего запроса (и полезная нагрузка)? Я бы ожидал, что URL-адрес будет '/ wcfservice1.svc/Cars', и я также ожидал бы, что если вы перейдете на этот URL-адрес в браузере, вы не сможете получить 404. Не могли бы вы попробовать? –

ответ

0

Вам может понадобиться установить параметры чтения/записи на вашем DataService класса

public class FooDataService : DataService<MyContext> 
{ 
    public static void InitializeService(DataServiceConfiguration config) 
    { 
     config.SetEntitySetAccessRule("Cars", EntitySetRights.All); 
    } 
} 

Если вы используете ObjectContext то DataService<T> будет знать, чтобы использовать поставщика EF WCF Data Services. Однако, если ваш T ничего, кроме (например, DbContext или DataContext), то по умолчанию службы WCF Data Services используют поставщика отражения (который является только для чтения).

Существует хак, чтобы получить ObjectContext из DbContext, но если вам нужно использовать DataContext, NHibernate, или любой другой тип контекста, вам нужно будет написать собственный IDataServiceUpdateProviderimplementation.

Смежные вопросы