Почему entity framework не устанавливает поля внешнего ключа при назначении свойства

#entity-framework

#entity-framework

Вопрос:

Итак, у меня есть несколько классов, которые хранятся в моей базе данных, и в них есть вещи, вот небольшой пример класса:

 public class Order {

    //Stuff

    [ForeignKey("QuoteIdField")]
    public virtual Quote Quote { get; set; }

    [Column("QuoteId")]
    public virtual Guid? QuoteIdField { get; set; }

    [NotMapped]
    public Guid QuoteId {
        get { return QuoteIdField.HasValue ? QuoteIdField.Value : Guid.Empty; }
        set { QuoteIdField = value; }
    }

    //More stuff...
}
  

Когда я написал этот метод быстрого модульного тестирования для проверки моей интеграции с Entity Framework, я обнаружил, что идентификатор цитаты не был установлен.

 using (var db = new DataContext()) {
    var order = new Order();

    //order.Quote is null
    //order.QuoteIdField is null

    order.Quote = db.Quotes.FirstOrDefault();

    //order.Quote is not null
    //order.QuoteIdField is null

    db.Orders.Add(order);
}
  

Я что-то неправильно понял в EF? Не устанавливает ли он внешний ключ при назначении свойства?

Комментарии:

1.Проверьте это после db.Orders.Add(order); строки.

2. @IvanStoev О да. Есть ли способ заставить его сделать это для всех свойств, прежде чем я его добавлю? (без их прямого назначения)

3. AFAIK, к сожалению, нет.