Заранее спасибо, что выслушал мою проблему.
У меня есть класс Linq to Sql, для которого в сетке отображаются конкретные свойства, для которых я использую ViewModel.
Сначала я вставлю часть, где я расширяю свой класс с помощью частичного класса:
public string Owner { get; private set; }
public Int32 Documents { get; private set; }
partial void OnLoaded()
{
Owner = "PersonCompanyRoleMedicalExam";
Documents = sfdb.StoredFiles.Count(s => s.Owner == this.Owner && s.OwnerId == this.Id);
}
Следующая недопустимая вставка моего ViewModel, используемого для сетки:
public class MedicalExamViewModel
{
public Int32 Id { get; set; }
public Int32 PersonCompanyRoleId { get; set; }
public Int32? PeriodInDays { get; set; }
public DateTime? ExamCompleted { get; set; }
public bool? MedicallyFit { get; set; }
public Int32 Documents { get; set; }
}
и, наконец, мой метод для вызова ajax из моей сетки:
[GridAction]
public ActionResult _MedicalExamGridAjaxBinding(Int32 Id)
{
PersonCompanyRole personCompanyRole = db.PersonCompanyRoles.Single(p => p.PersonId == Id);
var model = from o in db.PersonCompanyRoleMedicalExams
where o.PersonCompanyRoleId == personCompanyRole.Id
select new MedicalExamViewModel
{
Id = o.Id,
PersonCompanyRoleId = o.PersonCompanyRoleId,
PeriodInDays = o.PeriodInDays,
ExamCompleted = o.ExamCompleted,
MedicallyFit = o.MedicallyFit,
Documents = o.Documents
};
return View(new GridModel
{
Data = model
});
}
В строке "var model = from o в db.PersonCompanyRoleMedicalExams", где я разбиваю сразу после этого, глядя на объект, я получаю base {System.SystemException} = {"Член класса PersonCompanyRoleSHEAppointment.Documents не сопоставлен."}
Копание глубже в объекте в исключение, которое является System.SystemException, в InnerException говорится следующее: _COMPlusExceptionCode = -532462766.
Забавно, что я использую ту же самую технику для заполнения других объектов / моделей в моем проекте без каких-либо проблем, но есть одно различие, и между ними есть таблица связей. Примерно так: Person -> PersonCompanyRole> PersonCompanyRoleMedicalExam. PersonCompanyRole - это отношение один к одному, а PersonCompanyRole to PersonCompanyRoleMedicalExam - это отношение один ко многим. Для полноты я вставил в мой метод ajax, где я не получаю никаких исключений.
[GridAction]
public ActionResult _IncidentsGridAjaxBinding(Int32 Id)
{
var structures = db.sp_GetCompanyStructureDecendants(Id);
Collection<CompanyStructureIncident> companyStructureIncidents = new Collection<CompanyStructureIncident>();
foreach (sp_GetCompanyStructureDecendantsResult decendant in structures)
{
IEnumerable<CompanyStructureIncident> equipment = db.CompanyStructureIncidents.Where(r => r.CompanyStructureId == decendant.Id);
foreach (CompanyStructureIncident companyStructureIncident in equipment)
{
companyStructureIncidents.Add(db.CompanyStructureIncidents.Single(p => p.Id == companyStructureIncident.Id));
}
}
var model = from o in companyStructureIncidents
//where o.CompanyStructureId == Id
select new IncidentViewModel
{
Id = o.Id,
CompanyStructureId = o.CompanyStructureId,
DateOfOccurence = o.DateOfOccurence,
DateReported = o.DateReported,
Documents = o.Documents
};
return View(new GridModel
{
Data = model
});
}
Надеюсь, вы можете помочь.