2016-07-21 4 views
0

Добавления ссылки на неабстрактное свойство навигации отлично:Entity Framework - Добавить ссылку на абстрактное свойство навигации без загрузки

class Entity { 
    int Id { get; set; } 

    Reference Reference { get; set; } 
    Parent Other { get; set; } 
} 

class Reference { 
    int Id { get; set; } 
} 

abstract class Parent { 
    int Id { get; set; } 
} 

class Child : Parent { } 

async Task DbMethod() { 
    using(var context = new XYZDbContext()) { 
     var reference = new Reference { Id = 6 }; 
     context.Attach(reference); 

     var entity = new Entity { 
      Id = 3, 
      Reference = reference, 
     }; 

     context.Add(entity); 

     await context.SaveChangesAsync(); 
    } 
} 

Но если бы я хотел, чтобы установить Other свойства существующей запись (скажем, идентификатор 42), я не могу создать экземпляр класса Parent (как абстрактного), как я делаю с классом Reference.

Как бы добавить ссылку на существующий объект для абстрактного класса Parent? Я полагаю, что я мог бы добавить OtherId собственности к Entity классу и установить, что, но я хотел бы, чтобы не загрязнять объект, если это возможно

ответ

0

Почему бы не изменить свой абстрактный класс к неабстрактному один

class Parent { 
    int Id { get; set; } 
} 

Итак, вы можете создать экземпляр этого объекта, и все будет по-другому. Ваш абстрактный класс не ведет себя как абстрактный, основанный на вашем примере.

+0

Этот пример надуман для краткости. Класс должен быть абстрактным – flipchart

Смежные вопросы