使用EF 6的Lighswitch wcf ria服务

时间:2014-05-30 04:40:27

标签: wcf-ria-services visual-studio-lightswitch lightswitch-2013

美好的一天!

我创建了一个WCF RIA服务,如this示例中所述,但我的示例使用 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 中已添加了connectionstring。为什么LS请求另一个连接?

2 个答案:

答案 0 :(得分:0)

只需检查几件事情:

  1. Model1 类是否返回 IQueryable &lt; rb17 &gt;?
  2. rb17 类本身是否也有为每条记录填充的唯一ID属性(带有 Key 属性)?
  3. 如果没有唯一的ID属性,LightSwitch 会对实体产生问题,但通常不会导致您提及的错误。但是,这个错误可能是由很多不同的东西造成的,跟踪起来非常困难。

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

答案 1 :(得分: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; }
}