English 中文(简体)
我应该知道与反歧视办公室的合作。 网上数据服务 (FAQ)
原标题:What should I know about working with ADO.Net Data Services? (FAQ)
  • 时间:2009-10-06 16:32:18
  •  标签:

我先与http://msdn.microsoft.com/en-us/data/bb931106.aspx” rel=“nofollow noreferer”ADO.Net Data Services(Astoria)就近几个月学习,而我与技术一样,学习是真正的试验。 你们需要有效利用这些信息的信息散布在MSDN文件、文章、博客站、支持论坛和当然还有StackOver流程上。 这个问题对我来说是一个场所,可以分享我的一些难以接受的调查结果,以便其他人能够受益。 我也希望其他人贡献自己的最佳做法和立场,纠正我的误解!

为了全面披露,我先与林克一道利用这一框架来使我的生活更加复杂,因此我希望我的答复中的细节也适合实体框架。

从下面开始,我发现一些联系至关重要。 然后,我在答复部分专门论述专题。

Useful Links

问题回答

Service Operations

有时能够查询数据,进行简单的更新或创建,就足够了——你可能希望执行某些业务逻辑或某些复杂的查询,而通过URI计划是不可能的。 数据 各项服务以非常基本的形式与服务业务一起支持这项工作。

这使你能够增加服务的方法,但有一些限制:

  1. You can only use basic types or entity types (i.e. types already exposed by the service).
  2. Method parameters can only be simple types that can be expressed as part of a URL.
  3. No code is generated for Service Operations by datasvcutil, so you need to add them to the client libraries yourself.
  4. If you return a entity type but don t have anything to return, i.e. the result is null, then you ll get a 404 as the HTTP response.
  5. If you return void you won t be able to use the client data context to make the request, you ll have to use WebRequest.

实例(不过,这些例子简明扼要,实际上不需要成为服务业务):

[WebGet]
public Product GetProductByID(int productID)
{
    return this.CurrentDataSource.Products.First(p => p.ID == productID);
}

[WebGet]
public IEnumerable<Product> GetCancelledProducts(int productID)
{
    return this.CurrentDataSource.Products.Where(p.Cancelled);
}

Silverlight Client Library

LINQ Querying

首先,它认为,从你的角度来说,可以不使用linq syntax,因为所有查询都是不同步的,而且显然,电子计算方法并不采用BeginExecute方法。 请你利用Linq syntax,最后回答:

var query = (DataServiceQuery<Product>)myContext.Products.Where(p => p.SupplierID == 5);
query.BeginExecute(this.HandleQueryResults, query);

请注意,问题已经通过,因为你需要利用同样的数据服务机构来称终止妊娠,因此你只能利用这一背景。

Change Tracking

客户图书馆自动跟踪所生成类型中的外地变化。 为了做到这一点,你必须执行部分保留下来的公证。

例:

public partial class Product : INotifyPropertyChanged {

    public event PropertyChangedEventHandler PropertyChanged;

    partial void OnProductIDChanged() { FirePropertyChanged("ProductID"); }
    partial void OnProductNameChanged() { FirePropertyChanged("ProductName"); }

    private void FirePropertyChanged(string property) { ... }
}

在1.5版中,数据服务工具可以向您提供,但现在只有CTP:

Updated Server Data

违约时,银星客户的背景是,MergeOption公司即将提出申请。 这意味着,一旦你第一次提出询问,就会发现对实体的任何变化,这种变化是一种打断和优化业绩的形式。 若要了解你需要修改《雇佣军条例》,以克服这些障碍,这将确保更新这些物品。 你们也可以抛弃你们的境遇,重新恢复。

myContext.MergeOption = MergeOption.OverwriteChanges

Cross Domain Access

“银灯”为ADO生成型。 NET数据服务1利用自己的网络分机提供更多请求书,但不幸的是,这意味着交叉主的政策没有适用,你无法提出交叉要求。 围绕这一点开展工作,你可以代理请求或等待支持银星3号交叉主线的第1.5版(CTP 2目前已有)。

<><>Links>:





相关问题
热门标签