Я получил эту ошибку в своей 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?Я уже много чего перепробовал, но не смог найти хорошего ответа.Любая помощь будет оценена!