创建不在EntityFramework中的BreezeJs EntityType

时间:2016-05-26 01:09:14

标签: breeze

我有一个Web API 2服务,它有一个连接到实体框架的Breeze Controller。它从我的数据库中的表中获取几个EntityTypes(如Employee,UserConfiguration,Shipment等)

一切都很好。

但现在我想制作一个“自定义”的EntityType。一个叫做用户。我的数据库中实际上没有User表。我使用几个不同的来源来创建用户的实例。 (员工表,用户配置表和服务呼叫)

当我调用GetCurrentUser方法时,数据会正确返回给客户端。

但是我有这个设置允许在breeze创建对象时调用我的构造函数:

metadataStore.registerEntityTypeCtor('User', Entities.User, this.setupEntity);

但构造函数永远不会被调用。

如何让它看到User实体?

注意:如果可能的话,我宁愿在我的Web API代码中设置它,而不是在我的JavaScript / TypeScript中。

如果它是相关的,这是我的User类的一部分:

[DataContract]
public class User
{
    public User(Employee employee, ApplicationPermission permissions,
                UserConfiguration userConfiguration)
    {
        EmployeeId = employee.EmployeeId;
        LanId = employee.LanId;
        FirstName = employee.FirstName;
        LastName = employee.LastName;
        UserPermissions = new List<UserPermission>();            
        UserConfiguration = userConfiguration;
    }

    [DataMember]
    int? EmployeeId { get; set; }
    [DataMember]
    string FirstName { get; set; }
    [DataMember]
    string LastName { get; set; }
    [DataMember]
    List<UserPermission> UserPermissions { get; set; }
    [DataMember]
    private UserConfiguration UserConfiguration { get; set; }
}

1 个答案:

答案 0 :(得分:0)

我能够通过将自定义类添加到Entity Framework模型来实现此功能(即使它没有表)。我认为使用代码模型会更容易。我不知道它是否适用于设计模型(edmx)。

这个链接让我开始了:

http://breeze.github.io/doc-js/metadata-with-ef.html