使用EF的数据服务 - 是否可以使用返回自定义类型的WebGet方法?

时间:2011-03-14 14:54:21

标签: entity-framework wcf wcf-data-services

在我的项目中,我使用的是使用EF的数据服务。现在我有一个我想通过我的数据服务公开的自定义类,但我无法使它工作,似乎不可能在单个数据服务中混合自定义类型和EF。有什么建议吗?

看起来它没有在元数据中找到一些信息。

错误:

  

服务器遇到错误   处理请求。例外   消息是'无法加载元数据   对于返回类型   “System.Linq.IQueryable 1[ITS.NetProject.Model.CustomEnty]' of method 'System.Linq.IQueryable 1 [ITS.NetProject.Model.CustomEnty]   GetCustomEnties() ''。查看服务器日志   更多细节。异常堆栈   跟踪是:....

代码:

   [ServiceBehavior(IncludeExceptionDetailInFaults=true)]
        public class ITSServiceOData : DataService<ITSEntities>
        {
            public static void InitializeService(DataServiceConfiguration config)
            {

                config.SetEntitySetAccessRule("*", EntitySetRights.All);

                config.SetServiceOperationAccessRule("GetCustomEnties",                
    ServiceOperationRights.AllRead);

                config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
            }


            [WebGet]
            public IQueryable<CustomEnty> GetCustomEnties()
            {
                return from e in this.CurrentDataSource.CustomEnties select e;

            }

        }

///Here it is my model definition

namespace ITS.NetProject.Model
{
    partial class ITSEntities
    {
        public IQueryable<CustomEnty> CustomEnties 
        {
            get
            {
                return ...
            }
        }
    }

//Company, Equipment, Owner are EF entity classes
    [DataServiceKey("Id")]
    public class CustomEnty
    {
        public int Id {get;set;}

        public Subject Company { get; set; }

        public Subject Equipment { get; set; }

        public Subject Owner { get; set; }
    }
}

2 个答案:

答案 0 :(得分:1)

不,数据服务不支持该方案。您可以将自定义类型添加到Entity Fx模型中,但这远非理想......

答案 1 :(得分:0)

嗯免费骑手   - 将类和对象放入模型中并正确执行。根据上面的建议。   - 或制作单独的简单模型。使用相同的连接字符串。

或者那个讨厌的黑客...

_context.Database.ExecuteSqlCommand(cmdText, parameters);   

当没有人看啤酒oClock。 : - )