在Silverlight中从DB获取数据是一个好的做法吗?

时间:2012-10-23 00:41:47

标签: c# silverlight entity-framework-4 silverlight-4.0 callback

我正在使用SL 5.0和EntityFramework。我需要从两个实体获取数据,但我不喜欢我正在做的方式......通过回调。

var context = ...
context.Load(context.GetTestTemplatesSummaryQuery("OPA-3DKCL2")).Completed += (s, e) =>
    {
        var result = context.GetTestTemplatesSummary_Results;
        var result2 = ...

        context.Load(context.GetTestTemplatesSummaryQuery(result)).Completed += (s2, e2) =>
        {
             ... 
        };
    };

我正在寻找一种优雅的方法来做到这一点。

1 个答案:

答案 0 :(得分:2)

你正在做的是.Net版本1.0到4.0完全正确。这就是异步编程在.Net世界中的运作方式。

使用.Net 4.5,有一个新的async / await mechansim用于异步编程,如下所示:

public async Data GetData()
{
    return await _myService.GetDataAsync();
}

编译代码时,它会被分解为一系列异步方法,但开发人员编写的代码会大大简化。

如上所述,如果您有VS 2012(VS 11),那么您可以下载一个允许您使用Silverlight 5等待异步的包。如果您没有使用VS 2012,那么您目前所做的就是右。