У меня есть Продукт, который должен иметь несколько полей на нескольких языках. Поэтому я создал таблицу ProductLanguage, в которой есть сводные ключевые и языковые поля (ProductID, LanguageID, Name).Заполнение связанных объектов в DBContext Find
В моем классе продуктов я пытался что-то вроде этого:
[Table("Product")]
public class Product
{
DBContext db = new DBContext();
public Product()
{
this.Multimedias = new List<Multimedia>();
this.ProductLanguages = new List<ProductLanguages>();
this.ProductLanguage = db.ProductLanguages.Find(this.ID, Global.Language) ?? new ProductLanguage();
}
public int ID { get; set; }
public string Code { get; set; }
public virtual ICollection<Multimedia> Multimedias { get; set; }
public virtual ICollection<ProductLanguage> ProductLanguages { get; set; }
[NotMapped]
public virtual ProductLanguage ProductLanguage { get; set; }
}
Так что я мог сразу получить доступ к языку определенных полей без необходимости проходить через коллекцию - проблема является объектом, очевидно, не имеет идентификатора все же.
Есть ли способ, так что, когда я
Product product = db.Products.Find(id);
в контроллер будет автоматически заполнять мою собственность ProductLanguage?
Как вы устанавливаете товар? Если это уже в коллекции, почему у вас есть отдельное свойство для одного? Смешивание модели и доступ к БД могут стать беспорядочными. –
Уже в коллекции я хотел бы иметь отдельное свойство, поэтому я не дублирую «product.ProductLanguages.Where (x => x.LanguageID == y)» по всему моему коду и, возможно, забыл его где-то и потерял язык конкретный текст. –
Но почему вы используете db.ProductLanguages? Не могли бы вы использовать коллекцию ProductLanguages? –