저는 EF를 처음 사용하고 간단한 선택을 해결하는 방법을 모릅니다. 다음과 같은 두 가지 엔티티 유형이 있습니다.
IEnumerable<T> Listar(Expression<Func<T, bool>> filter = null,
Func<IQueryable<T>, IOrderedQueryable<T>> orderBy = null,
string includeProperties = "");
과
T Cargar(Expression<Func<T, bool>> filter,
string includeProperties = "");
그리고 두 개의 테이블이 있습니다
Estatus 테이블 :
+----+----------+
| ID | Nombre |
+----+----------+
| 1 | ACTIVE |
+----+----------+
| 2 | DISABLED |
+----+----------+
테이블로드 유형 :
+----+--------+--------------+-----------+
| ID | Nombre | Descripcion | EstatusID |
+----+--------+--------------+-----------+
| 1 | store | description1 | 2 |
+----+--------+--------------+-----------+
| 2 | oxo | description2 | 2 |
+----+--------+--------------+-----------+
그리고 나는 다음과 같은 가치를 얻고 있습니다.
var tc = _tipoCargaService.Listar(c => c.EstatusID.Equals(estatusid));
List<TipoCargaViewModel> tiposcargas = new List<TipoCargaViewModel>();
foreach (var item in tc)
{
var carga = new TipoCargaViewModel()
{
ID = item.ID,
Nombre = item.Nombre,
Descripcion = item.Descripcion,
EstatusID = item.EstatusID
};
tiposcargas.Add(carga);
}
내가하고 싶은 Nombre
것은 Estatus Table의 값을 얻는 것 입니다. Carga 테이블의 EstatusID
ID는 Estatus 테이블의 ID와 같습니다.
먼저 다음과 같은 carga 테이블의 모든 값을 얻으려고합니다.
var cargatc = _tipoCargaService.Listar().ToList();
그런 다음 estatus를 다음과 같이 호출하십시오.
var estatus = _estatusService.Cargar(x => x.Nombre.Where(ID == cargatc.EstatusID));
그러나 나는 같을 수 없다 Nombre.Where(ID == cargatc.EstatusID)
나는 Cannot resolve symbol ID
빨간색으로 표시되고 cargatc.EstatusID
. 문안 인사
적어도 겉으로는 includeProperties
매개 변수 를 통해 메서드에 구워진 기능이 이미 있습니다 . 여기에 관련 엔티티를 추가하기 만하면됩니다.
var tc = _tipoCargaService.Listar(c => c.EstatusID.Equals(estatusid), includeProperties: "Estatus");
그때:
var carga = new TipoCargaViewModel()
{
ID = item.ID,
Nombre = item.Estatus.Nombre,
Descripcion = item.Descripcion,
EstatusID = item.EstatusID
};
물론 TiposCarga
엔터티 클래스 에 탐색 속성이 있어야합니다 .
public Estatus Estatus { get; set; }
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다