Класс отображается, несмотря на то, что он поддерживается игрой с Fluent API - PullRequest
1 голос
/ 24 июня 2019

Я пытаюсь добавить свойство типа, которое не должно быть сопоставлено с моделью базы данных. Почему метод игнорирования Fluent API имеет поведение, отличное от атрибута NotMapped? Каков фактический эквивалент атрибута NotMapped?

Я прочитал несколько постов и статей, в которых утверждается, что фактическим эквивалентом атрибута NotMapped является метод Ignore. К сожалению, если я не добавлю упомянутый атрибут, я получу ошибку:

System.Collections.Generic.KeyNotFoundException: Указанный ключ отсутствует в словаре. в System.ThrowHelper.ThrowKeyNotFoundException () в System.Collections.Generic.Dictionary`2.get_Item (ключ TKey) в System.Web.Http.OData.Builder.EdmTypeBuilder.ReorderDependentProperties (NavigationPropertyConfiguration navProperty) в System.Web.Http.OData.Builder.EdmTypeBuilder.CreateNavigationProperty (конфигурация EntityTypeConfiguration) в System.Web.Http.OData.Builder.EdmTypeBuilder.GetEdmTypes () (...)

Я хочу избежать использования каких-либо атрибутов в моей доменной модели, поэтому я пытаюсь найти решение на основе Fluent API.

Класс Common.Model.SomeComplexModel не является объектом базы данных.

public class Vehicle
{
    public int Id { get; set; }
    public string Name { get; set; }

    // An error occures if I remove following attribute
    [System.ComponentModel.DataAnnotations.Schema.NotMapped]
    public Common.Model.SomeComplexModel AdditionalData { get; set; }
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
   modelBuilder.Ignore<Common.Model.SomeComplexModel>();

   modelBuilder.Configurations.Add(new VehicleConfiguration());
   (...)
}

internal class VehicleConfiguration : EntityTypeConfiguration<Vehicle>
{
    internal VehicleConfiguration()
    {
        (...)
        Ignore(v => v.AdditionalData);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...