【问题标题】:Extending default entity framework model class to include custom class扩展默认实体框架模型类以包含自定义类
【发布时间】:2011-03-14 09:27:50
【问题描述】:

我有一个实体模型,其中有一些从我的数据库中添加的表。我想包含一个自定义类,它将充当数据模型并返回自定义数据。这是我想要做的:

// My custom data model
public class DataModel
{
    var dbContext = new ODataDemoEntities();

    Employees = from e in dbContext.Employee
                select new EmployeeModel
                {
                    ID = e.EmployeeID,
                    FirstName = e.FirstName,
                    LastName = e.LastName
                };

    public IQueryable<EmployeeModel> Employees { get; private set; }
}

// My custom class
[DataServiceKey("ID")]
public class EmployeeModel
{
    /// <summary>ID of the employee.</summary>
    public int ID { get; set; }

    /// <summary>First name of the employee.</summary>
    public string FirstName { get; set; }

    /// <summary>Last name of the employee.</summary>
    public string LastName { get; set; }
}

// My WCF Data Service Code
public class EmployeeDataService : DataService<DataModel>
{
    // This method is called only once to initialize service-wide policies.
    public static void InitializeService(DataServiceConfiguration config)
    {
        config.SetEntitySetAccessRule("Employees", EntitySetRights.AllRead);
        config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
    }
}

但是,我想在我现有的实体数据模型类中包含这个Employees 类,这样我就不会使用不同的数据模型创建单独的服务,而是扩展我现有的数据模型以包含我的自定义类(EmployeesModel)。

【问题讨论】:

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


    【解决方案1】:

    为什么要在现有实体上公开自定义视图?客户无论如何都可以这样做,并使用投影以他们想要的方式自定义它们。客户端的查询与上面编写的初始化Employees属性的查询完全相同。

    目前,没有办法做到这一点。我们正在寻找方法来确保在我们的下一个版本中发生。虽然没有任何承诺,但其中一件事我们已经被问过很多次,并且在我们的优先级列表中非常高。

    使用此投票网站为该功能投票:http://blogs.msdn.com/b/astoriateam/archive/2010/09/10/what-do-you-want-to-see-added-changed-in-wcf-data-services.aspx

    谢谢 普拉提克

    【讨论】:

    • 在我的默认实体上公开自定义视图的原因是,我试图从多个表的连接中获取自定义数据(上面的代码只是一个示例,所以我使用一个表返回自定义字段),然后使用分页。我当然可以通过公开服务操作来做到这一点,但是我没有得到总记录的计数,正如 pablo castro 在他的一篇文章中所说,需要解析整个表达式树并且可能不可行。如果不可能,我可能需要公开自定义数据模型并构建单独的数据服务,并且可维护性会很困难。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多