2014-02-27 2 views
0

Visual Studio 2013에서 ChangeLog라는 두 개의 테이블, ChangeMaster 및 ChangeDetail을 사용하여 데이터 집합을 만들었습니다. 두 테이블은 하나의 int 키에 대한 관계에 의해 조인되며 ChangeDetail 만 내 문제에서 중요한 역할을합니다. 이는보고 데이터 세트이며 디스크의 데이터베이스에 상주하지 않습니다.LINQ 결과를 새 데이터 집합 행으로 변경

감사 데이터, 즉 레코드의 변경 사항을보고하고 있습니다. 일부 사용자는 ApexSQL 데이터 테이블을 감사 소스로 인식 할 수 있습니다. Entities.ChangeLog.ChangeDetailRow를 changeDetail이라는 클래스 호출로 대체하면 아래의 쿼리가 제대로 작동합니다. 하지만 네이티브 데이터 셋 테이블 인 ChangeDetailRow를 사용할 수는 없습니다. '???'에 포함 된 입력란에 오류가 발생합니다. 'Entities.ChangeLog.ChangeDetailRow에는 0 개의 인수를 사용하는 생성자가 없습니다.'라는 메시지가 표시됩니다. 유일한 인수는 (DataRowBuilder rb)입니다.

(Entities.ChangeLog.ChangeDetailRow)_changeDS.Tables["ChangeDetail"].NewRow(); 

을하지만 LINQ이 원하는 것을 알아낼 수 없습니다 :

내가 사용 ChangeDetail에 대한 C#에서 새 행을 만들 수 있습니다. 여러 인수를 받아 들일 수 있지만 그 중 하나를 성공하지 못했습니다 ChangeDetail 확장 메서드를 만드는 시도했다.

무엇을 넣어야합니까? ... ???

List<Entities.ChangeLog.ChangeDetailRow> details = 
    (from data in infoEntities.AUDIT_LOG_DATA 
    join trx in infoEntities.AUDIT_LOG_TRANSACTIONS on data.AUDIT_LOG_TRANSACTION_ID equals trx.AUDIT_LOG_TRANSACTION_ID 
    where PKs.Contains(data.PRIMARY_KEY) 
    select new ???Entities.ChangeLog.ChangeDetailRow??? 
    { 
     PKInfoRequest = data.KEY1, 
     Date = trx.MODIFIED_DATE, 
     Action = trx.AUDIT_ACTION_ID, 
     Field = data.COL_NAME, 
     OldValue = data.OLD_VALUE_LONG, 
     NewValue = data.NEW_VALUE_LONG 
    }).ToList<Entities.ChangeLog.ChangeDetailRow>(); 

답변

0

here 말씀을 고려할 때, 당신은 아마 새 행 그런 식으로 만들 수 없습니다. 당신은 단순히 '???' 시도 :

... 
select new 
    { 
     PKInfoRequest = data.KEY1, 
... 

.NewRow()으로 행을 만들고 데이터로 채울 수 있습니다.

+0

예, 당신이 제안하고있는 구조체와 var를 사용할 수 있습니다. 그러나 ChangeDetail을 모방 한 클래스를 직접 만들면 var 결과를 ChangeDetail 테이블에 복사하는 추가 단계가 필요하다는 것을 의미합니다. ChangeDetail을 사용하는 이유는보고 용으로 DevExpress를 사용하고 Master-Detail 관계를 허용하기 때문입니다. 그 Master-Detail 관계를 정의하는 방법을 알고있는 유일한 방법은 Data Designer에 있으므로 ChangeLog Dataset을 궁극적으로 사용해야합니다. – user1185782

+0

더 이상 당신을 도울 수 없습니다. 그것은 LINQ 문제가 아니라 DataRow 문제가 아닌 것 같습니다. 나는 단지 기초 만 알고 있으며 MSDN에서는 추가 단계를 수행하도록 제안되어 있으므로 작동한다면 사용하겠다. 나중에 최적화하십시오 : –

+0

당신이 제공 한 링크는 상황을 요약합니다. LINQ to Entities는 0 매개 변수 생성자에서만 작동하며 ADO.NET 데이터 디자이너는 이러한 생성자를 만들지 않습니다. 그것들을 생성하고 쓸모없는 Rowbuilder 매개 변수를 사용하지 마십시오. – user1185782

관련 문제