Использование OData с наследованием модели вызывает ошибку отсутствующего свойства - PullRequest
0 голосов
/ 14 октября 2018

Я получил эту ошибку в своей OData с реализацией ядра asp.net во время выполнения: в экземпляре EDM типа '[XXX.Asset Nullable = True]' отсутствует свойство 'externalId'.

проблема возникает, когда я пытаюсь получить доступ к конечной точке odata с помощью запроса расширения: "/ odata / v1 / precinct? $ expand = assets".Кажется, это происходит потому, что я поместил свойство «ExternalId» в свой базовый класс, и этого не произойдет, если я добавлю это свойство в «Актив».

Ниже приведены мои последние коды:

public abstract class Entity
{
    public int Id { get; set; }

    public string ExternalId { get; set; }
}
public class Precinct : Entity
{
    public string Name { get; set; }
    public string Description { get; set; }
    public virtual IEnumerable<Asset> Assets { get; set; }

}
public class Asset : Entity
{
    public string Name { get; set; }
    public string Description { get; set; }
}

и вот моя конфигурация модели для ODATA

public class AssetModelConfiguration : IModelConfiguration
{
    public void Apply(ODataModelBuilder builder, ApiVersion apiVersion)
    {
        var org = builder.EntitySet<Asset>("asset").EntityType;
        org.HasKey(x => x.ExternalId);
        org.Ignore(x => x.Id);

    }
}

Странная вещь, если я добавлю ExternalId в класс "Asset", он работает.Свойство Id является первичным ключом, в то время как «ExternalId» помечен как AlternateKey в конфигурации DBModel.

Я что-то упустил в своей конфигурации odata?Я уже много чего перепробовал, но не смог найти хорошего ответа.Любая помощь будет оценена!

...