WCF 数据服务 AddObject

Posted

技术标签:

【中文标题】WCF 数据服务 AddObject【英文标题】:WCF DATA SERVICES AddObject 【发布时间】:2013-05-29 01:18:16 【问题描述】:

我正在尝试向我的实体添加一个对象,但它给了我错误:“未找到” 这是我的代码:

    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();

我在 AddObject 中尝试过“Cars”和“Car”,但仍然没有帮助..我的 CARID 列是数据库中的 PKEY 列。

请帮忙。谢谢。

【问题讨论】:

您的实体集的名称是什么?即,当您访问 http://.../wcfservice1.svc 时,出现的名称是什么? 它的名字显示为“汽车” 嗯,dtx.AddObject("Cars", car); 给你同样的错误?那个错误是来自服务器的404?您能否使用 Fiddler(或任何其他 Web 流量监控程序)之类的工具来查看传出请求 URI(和有效负载)是什么?我希望 URL 是 /wcfservice1.svc/Cars,并且我还希望如果您在浏览器中访问该 URL,您不应该得到 404。您可以尝试一下吗? 是的,我可以通过浏览器浏览它,它工作正常,但从代码 AddObject 抛出错误。 【参考方案1】:

您可能需要在 DataService 类上设置读/写设置

public class FooDataService : DataService<MyContext>

    public static void InitializeService(DataServiceConfiguration config)
    
        config.SetEntitySetAccessRule("Cars", EntitySetRights.All);
    

如果您使用的是ObjectContext,那么DataService&lt;T&gt; 将知道使用 EF WCF 数据服务提供程序。但是,如果您的 T 不是(例如 DbContextDataContext),则默认情况下 WCF 数据服务使用反射提供程序(它是只读的)。

有一个技巧可以从DbContext 中获取ObjectContext,但如果您需要使用DataContext、nHibernate 或任何其他类型的上下文,则需要编写自定义IDataServiceUpdateProviderimplementation.

【讨论】:

以上是关于WCF 数据服务 AddObject的主要内容,如果未能解决你的问题,请参考以下文章

WCF 数据服务还是只是 WCF 服务?

WCF / WCF 数据服务 / WCF RIA 服务

使用 WCF 或 WCF 数据服务封装数据访问层

WCF Restful 服务和 WCF 数据服务 [关闭]

WCF Web API 和 WCF 数据服务之间的区别

WCF 服务将数据填充到 ASP.net 下拉列表(学习 WCF 服务)