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<T>
将知道使用 EF WCF 数据服务提供程序。但是,如果您的 T
不是(例如 DbContext
或 DataContext
),则默认情况下 WCF 数据服务使用反射提供程序(它是只读的)。
有一个技巧可以从DbContext
中获取ObjectContext
,但如果您需要使用DataContext
、nHibernate 或任何其他类型的上下文,则需要编写自定义IDataServiceUpdateProvider
implementation.
【讨论】:
以上是关于WCF 数据服务 AddObject的主要内容,如果未能解决你的问题,请参考以下文章