Внутри моей модели класса я использую вызов метода IsAlreadyAssigned, следующим образом: -Лучший способ использовать вспомогательные методы модели класса
public partial class DataCenter
{
public bool IsAlreadyAssigned()
{
return (TMSRacks.Any() || TMsRouters.Any() || Zones.Any());
}
}
Основная цель этого метода помощник, чтобы скрыть кнопку удаления на представлении если объект имеет дочерние записи; следующим образом: -
<td>
@Html.ActionLink("Edit", "Edit", new { id= item.ID})
@if (!item.IsAlreadyAssigned())
{
<text>|</text>
@Ajax.ActionLink("Delete",
"Delete", "DataCenter",
new { id = item.ID },
new AjaxOptions
{
Confirm = "Are You sure You want to delete (" + item.Name + ")",
HttpMethod = "Post",
OnSuccess = "deletionconfirmation",
OnFailure = "deletionerror"
})
}
</td>
Но на мой взгляд, индекс, который показывает 10 записей, в то время, я буду скрывать или отображать ссылку удалить соответствующим образом, так что я должен включать все навигационные свойства, в моем запросе, как следующие: -
public IQueryable<DataCenter> AllFindDataCenters(string q, bool forautocomplete = false)
{
return from datacenter in tms.DataCenters.Where(a=> (String.IsNullOrEmpty(q)) || (a.Name.ToUpper().StartsWith(q.ToUpper())))
.Include(a=>a.Zones)
.Include(a=>a.TMsRouters)
.Include(a=>a.TMSRacks)
select datacenter;
}
Другое мудрое каждая запись на мой взгляд, индекс может сделать не более трех запросов к БД, чтобы проверить, есть ли какие-либо дочерние записи. Итак, я включил все свойства навигации, как показано выше, чтобы реализовать требование скрытия/отображения ссылки удаления. так что есть лучший способ управлять моей логикой, так как мне не нужно отображать какие-либо данные свойств навигации (tmsrouter, tmsfirewalls, zonea), я просто хочу знать, существует ли atleat одна запись или нет? Thanks
любой является наиболее эффективным способом, как на меня .. –
, но в моем случае я должен тянуть все навигационные свойства, чтобы решить, если любое возвращение() true или false .. это проблема. моя проблема не с Any(), она сама .. –