【发布时间】:2011-03-08 01:11:51
【问题描述】:
我一直在为我正在开发的程序整合一个审计解决方案,我在其中使用 LINQ 进行更新/插入操作。我想出了以下解决方案(这是用于插入的 sn-p)(注意 Tables 变量包含已修改的所有表的列表 - 我手动将它们添加到列表中并调用此方法):
BindingFlags b = BindingFlags.Instance | BindingFlags.Public;
LINQDataContext dc = new LINQDataContext();
foreach (object Table in Tables)
{
string TableName = Table.ToString().Replace("Project.", "");
switch (TableName)
{
case "Job":
string NewJobString = null;
Job JobDetails = (Job)Table;
var prpsJob = typeof(Job).GetProperties(b);
foreach (var p in prpsJob)
{
object x = p.GetGetMethod().Invoke(JobDetails, null);
x = StripDate(x);
NewJobString += p.Name + ": " + x + Environment.NewLine;
}
Audit(JobID, NewJobString, "New Job created", SourceID, "", JobDetails.JobID);
break;
case "Estimation":
string NewEstimationsString = null;
Estimation EstimationDetails = (Estimation)Table;
var prpsEstimations = typeof(Estimation).GetProperties(b);
foreach (var p in prpsEstimations)
{
object x = p.GetGetMethod().Invoke(EstimationDetails, null);
x = StripDate(x);
NewEstimationsString += p.Name + ": " + x + Environment.NewLine;
}
Audit(JobID, NewEstimationsString, "New Estimation created", SourceID, "", EstimationDetails.EstimationID);
break;
对于每个可能的表名,代码都会继续。代码运行良好,但似乎效率很低——每种情况都有一个几乎相同的块。有没有更有效的方法?
【问题讨论】:
-
PLINQO 在 DataContext 中有审计功能:codesmithtools.com/product/frameworks 审计细节:codesmithtools.com/product/frameworks/plinqo/tour/auditing
-
这是哪个 .NET 框架?
标签: c# asp.net linq-to-sql