【发布时间】:2014-02-28 08:16:11
【问题描述】:
我在 Visual Studio 2013 中创建了一个名为 ChangeLog 的数据集,其中包含两个表:ChangeMaster 和 ChangeDetail。这两个表通过单个 int 键上的关系连接,只有 ChangeDetail 在我的问题中起作用。这是一个报告数据集,永远不会驻留在磁盘上的数据库中。
我正在报告审计数据,即对记录的更改。你们中的一些人可能会将 ApexSQL 数据表识别为我的审计源。如果我用我自己的类调用 changeDetail 替换 Entities.ChangeLog.ChangeDetailRow,则下面的查询可以正常工作。但我无法让它与本机数据集表 ChangeDetailRow 一起使用。错误发生在我包含在“???”中的字段上它说“Entities.ChangeLog.ChangeDetailRow 不包含采用 0 个参数的构造函数”。唯一的参数是 (DataRowBuilder rb)。
我可以使用 C# 为 ChangeDetail 创建新行:
(Entities.ChangeLog.ChangeDetailRow)_changeDS.Tables["ChangeDetail"].NewRow();
但无法弄清楚 LINQ 想要什么。我尝试为 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>();
【问题讨论】:
标签: linq dataset visual-studio-2013