1

再会!

我创建了一个 WCF RIA 服务,如示例中所述,但我的示例使用EF 6.1,并且GetAllOrders方法从数据库返回一个集合。

public class RiaService : DomainService
{
    [Query(IsDefault = true)]
    public IQueryable<rb17> GetAllOrders()
    {
         var model = new Model1();
        return model.Orders;
    }

    protected override int Count<T>(IQueryable<T> query)
    {
        return query.Count();
    }
}

之后,我创建了一个 lightswitch 项目,将数据源添加为我的 WCF RIA 服务并添加屏幕。
但是当我运行一个项目时,列表屏幕返回错误:
"Unable to load data. Please check your network connection and try loading again.".

请解释一下,我必须在哪里初始化连接?在我的 WCF RIA 服务方法中GelAllOrders,一切正常,当我设置断点时方法返回集合是可查询的。在类Model1中已经添加了连接字符串。为什么 LS 请求另一个连接?

4

2 回答 2

0

只需检查几件事:

  1. Model1类是否返回IQueryable < rb17 >?
  2. rb17类本身是否具有为每条记录填充的唯一 ID 属性(带有Key属性)

如果没有唯一的 ID 属性,LightSwitch出现实体问题,但通常不会导致您提到的错误。但是,该错误可能是由许多不同的事情引起的,因此很难追踪。

您使用 EF 6.1 的事实应该不是问题。LightSwitch如何创建实体并不重要,只要它们满足我上面提到的这两个规则即可。数据库连接是导致该错误的常见原因,但是当您调试时说您可以看到正在创建的记录?

于 2014-05-30T12:35:22.727 回答
0

这是工作。

通过将模型上下文的初始化连接字符串添加到构造函数来解决问题。

public class Model1 : DbContext
{
    public Model1()
    {
        const string temp =
            @"data source=.\sqlexpress;initial catalog=TestDb;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework";
        Database.Connection.ConnectionString = temp;
        Database.SetInitializer<Model1>(null);
    }

    public virtual DbSet<Orders> Orders { get; set; }
}
于 2014-06-02T05:35:01.767 回答