Создание типа сущности BreezeJs, которого нет в EntityFramework

У меня есть служба Web API 2, которая имеет контроллер Breeze, который подключается к entity framework. Он получает несколько типов сущностей из таблиц в моей базе данных (например, Employee, UserConfiguration, Shipment etc)

Все отлично работает.

Но теперь я хочу сделать» пользовательский » EntityType. Один вызванный пользователь. На самом деле в моей базе данных нет пользовательской таблицы. Я использую несколько различных источников, чтобы сделать экземпляр пользователя. (Таблица Employee, таблица UserConfiguration и вызов службы)

При вызове GetCurrentUserметода данные возвращаются клиенту правильно.

Но у меня есть эта настройка, чтобы позволить моему конструктору быть вызванным, когда breeze создает объект:

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

Но конструктор никогда не вызывается.

Как я могу заставить его увидеть Userсущность?

Примечание: Если возможно, я предпочел бы установить это в моем коде веб-API, а не в моем JavaScript/TypeScript.

В случае, если это актуально, вот часть моего пользовательского класса:

[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 ответ

  1. Я смог заставить это работать, добавив свой пользовательский класс В модель Entity Framework (даже если у него нет таблицы). Я думаю, что это было проще с моделью кода. Я не знаю, было ли бы это выполнимо с моделью дизайна (edmx).

    Эта ссылка заставила меня начать:

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