【发布时间】:2019-12-28 21:45:08
【问题描述】:
在一个项目中,我非常接近使用 WCF 服务和实体框架来实现 OData。使用 WCF 服务,我能够扩展 DataService,它能够将我的上下文转换为 OData 可查询的实体。除了使用 ODataController 之外,我想做同样的事情。理想情况下,我希望从一个控制器访问我的所有实体集。这可能吗?
这是我迄今为止尝试过的方法。 How do I bind multiple entity sets to one odata controller?
这是我在 wcf 服务中使用的方法
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, IncludeExceptionDetailInFaults = true)]
public class MyService : MSDataService.System.Data.Services.DataService<MyDataContext>
{
private SPWeb _web;
private string connectionString;
#region Constructor
/// <summary>
/// Default constructor
/// </summary>
public MyService() : base()
{
}
#endregion
#region Methods
protected override MyDataContext CreateDataSource()
{
return newMyDataContext();
}
public static void InitializeService(MSDataService::System.Data.Services.DataServiceConfiguration config)
{
config.SetEntitySetAccessRule("MyEntity1", MSDataService::System.Data.Services.EntitySetRights.AllRead);
config.SetEntitySetAccessRule("MyEntity2", MSDataService::System.Data.Services.EntitySetRights.AllRead);
config.DataServiceBehavior.MaxProtocolVersion = System.Data.Services.Common.DataServiceProtocolVersion.V2;
config.DataServiceBehavior.AcceptProjectionRequests = true;
config.UseVerboseErrors = true;
config.EnableTypeAccess("*");
config.SetEntitySetPageSize("*", 1000);
}
#endregion
}
MyDataContext 具有用于 MyEntity1 和 MyEntity2 的 DbSet。
对于 OData 控制器,我目前需要为每个实体使用两个不同的控制器,但我想要一个通用控制器。
【问题讨论】:
标签: c# entity-framework wcf odata