Скажем, у меня есть сущность Employee, и у каждого Employee есть много сущностей EmployeeChange.
Employee и EmployeeChange выглядят так:
class Employee
{
[Key]
public int EmployeeKey {get;set;}
public string EmployeeName { get; set; }
public int CurrentEmployeeChangeKey { get; set; }
[ForeignKey("CurrentEmployeeChangeKey")]
public virtual EmployeeChange CurrentEmployeeChange {
get { return EmployeeChanges.FirstOrDefault() ; } /*set;*/ }
public virtual ICollection<EmployeeChange> EmployeeChanges { get; set; }
}
class EmployeeChange
{
[Key]
public int EmployeeChangeKey { get; set; }
public int EmployeeKey { get; set; }
[ForeignKey("EmployeeKey")]
public virtual Employee Employee { get; set; }
public string EmployeeStreet { get; set; }
public string EmployeeCity { get; set; }
public string Etc { get; set; }
public DateTime ChangeEffective { get; set; }
}
Есть ли запрос LINQ, которыйвыровнять их, чтобы сделать что-то похожее на приведенное ниже для нас в MVC ViewModel, без перечисления каждого отдельного свойства? Т.е. если я добавляю / удаляю свойства в своем классе Entity или Entity, я хочу, чтобы запрос LINQ не должен был изменяться.Разумеется, приведенное ниже динамически генерируется из проекции в запросе LINQ, а не является фактически объявленным классом.Одна важная вещь заключается в том, что любые аннотации данных необходимо будет сохранить, чтобы они были доступны для представления:
class EmployeeCurrentChange
{
public string EmployeeName { get; set; }
public string EmployeeStreet { get; set; }
public string EmployeeCity { get; set; }
public string Etc { get; set; }
public DateTime ChangeEffective { get; set; }
//I don't need the below properties in the result, but if they
//happen to be there I don't mind.
public int EmployeeKey { get; set; }
[ForeignKey("EmployeeKey")]
public virtual Employee Employee { get; set; }
[Key]
public int EmployeeKey {get;set;}
public int CurrentEmployeeChangeKey { get; set; }
[ForeignKey("CurrentEmployeeChangeKey")]
public virtual EmployeeChange CurrentEmployeeChange {
get { return EmployeeChanges.FirstOrDefault() ; } /*set;*/ }
public virtual ICollection<EmployeeChange> EmployeeChanges { get; set; }
[Key]
public int EmployeeChangeKey { get; set; }
}
Я отметил это как отражение, поскольку понимаю, что это невозможно без использования отражения.