#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, к сожалению, нет.