Я пытаюсь добавить свойство типа, которое не должно быть сопоставлено с моделью базы данных. Почему метод игнорирования 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);
}
}