모두 좋은 날, ASP.NET, Entity Framework 등의 초보자. 직선 프로그래밍에 정통하므로 새로운 방법으로 넘어 가기 전에 먼저 오래된 방법을 잊어 버려야합니다.특정 하위 요소 만 반환하도록 엔터티 프레임 워크 컨텍스트 필터링
FLEET 항목 (부모)과 그 모든 FLEETEVENT 항목 (자녀). 두 개는 FleetId 필드를 통해 연결됩니다.
다음을 사용할 수 있습니다 : Fleet fleet = db.Fleets.Find(id);
그리고 id 변수와 일치하는 상위 레코드와 모든 하위 요소를 반환합니다.
내가 뭘하려고 만 자식 요소를 반환하는 경우 FLEETEVENT.STATUS == 진정한
내가 LINQ 식을 DataLoadOptions.AssosiateWith를 사용하여 시도했다, 그러나 나는 AssociateWith 및 변환 오류가 모든 레코드를 얻을 수 LINQ 식을 사용하려고합니다.
나는이 일을하기가 너무 어려워서는 안된다고 생각하지만, 나는 낡은 사고 방식에 빠져있다.
커넥터 모델 :
이public class FleetContext : DbContext
{
public FleetContext() : base("DefaultConnection")
{
}
public DbSet<Fleet> Fleets { get; set; }
public DbSet<FleetEvent> FleetEvents { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new FleetConfiguration());
modelBuilder.Configurations.Add(new FleetEventConfiguration());
}
}
상위 모델 :
이public class Fleet : IObjectWithState
{
public Fleet()
{
FleetEvents = new List<FleetEvent>();
Status = true;
}
public System.Guid FleetId { get; set; }
public string FleetType { get; set; }
public string FleetNum { get; set; }
public string FleetMake { get; set; }
public string FleetModel { get; set; }
public int FleetYear { get; set; }
public bool Status { get; set; }
public byte[] RowVersion { get; set; }
public ObjectState ObjectState { get; set; }
public virtual List<FleetEvent> FleetEvents { get; set; }
}
아이 모델 : LINQ를 사용
public class FleetEvent : IObjectWithState
{
public System.Guid FleetEventId { get; set; }
public DateTime FleetEventDate { get; set; }
public string FleetEventType { get; set; }
public string FleetEventDesc { get; set; }
public bool Status { get; set; }
public byte[] RowVersion { get; set; }
public System.Guid FleetId { get; set; }
public Fleet Fleet { get; set; }
public ObjectState ObjectState { get; set; }
}
, 이것은이다 다음과 같이
코드 snipets은 내 공동의 코드 사용중인 컨트롤러 :
var result = from f in db.Fleets
join fe in db.FleetEvents
on f.FleetId equals fe.FleetId
where ((f.FleetId == id) && (fe.Status == true))
select new { f, fe };
Fleet fleet = result.ToList();
LinqPad를 통해 LINQ 구문이 올바르다는 것을 확인했으며 예상 한 결과를 반환했습니다. 그러나 코드에서 사용하면 Fleet 함대 코드에서 변환 오류가 발생합니다.
올바른 방향으로 나를 알려줄 수있는 정보는 크게 감사하겠습니다.
구체적 오류 메시지를 제공해주십시오. –