小编Pie*_*rto的帖子

实体框架6:审计/跟踪变更

我在C#中有我的核心项目.

我在一个数据库上工作,其中一些表有"user_mod"和"date_mod"列用于签名谁和什么时候做了一些mods和"data_new"和"user_new"相同.

我的问题:有没有办法集中这个并自动插入这些数据,我在哪里创建实例dbContext

如果没有,我将使用审计跟踪工具.我见过其中的一些,但是有一个问题:所有这些,需要我的模型中的一些代码.但是我不想在我的模型中写,因为如果我必须改变它,我将失去mod.是否可以在不写入模型文件的情况下使用EF6的审计跟踪?怎么样?

编辑:

我试图覆盖saveChanges.

public partial class PieEntities : DbContext
{
    public override int SaveChanges(System.Data.Objects.SaveOptions options)
    {
        var timestamp = DateTime.Now;

        EntityState es = EntityState.Added;
        ObjectStateManager o = new ObjectStateManager();

        foreach (ObjectStateEntry entry in o.GetObjectStateEntries(EntityState.Added ))  {
            if (entry.Entity.GetType() == typeof(TabImpianti)) {
                TabImpianti impianto = entry.Entity as TabImpianti;
                impianto.DATA_INS = timestamp;
                impianto.DATA_MOD = timestamp;
                string u = mdlImpostazioni.p.UserName;
                impianto.USER_INS = u;
                impianto.USER_MOD = u;
            }
        }
        return base.SaveChanges(options);
    }
}
Run Code Online (Sandbox Code Playgroud)

更新:我在这里总结了解决方案.

c# audit entity-framework audit-trail entity-framework-6

47
推荐指数
3
解决办法
6万
查看次数

实体框架查询仅添加但未保存的值

我在几年内使用Entity Framework,现在我遇到了一些问题.

我将一个实体添加到我的表中

Entities.dbContext.MyTable.Add(obj1);
Run Code Online (Sandbox Code Playgroud)

好的

然后,我想在MyTable上查询,比如

Entities.dbContext.MyTable.Where(.....)
Run Code Online (Sandbox Code Playgroud)

上面的代码将在db中查询我的MyTable.

还有一种方法可以在saveChanges之前查询刚刚添加的值吗?(obj1)怎么样?

UPDATE

我为什么需要这个?因为,对于我添加的每个新元素,我需要编辑上一个和下一个记录中的一些值(此表中有一个datetime字段)

UPDATE2

假设我必须添加很多对象,但只在添加最后一项后才调用saveChanges.每次添加新项目时,我都会读取其日期时间字段,并在数据库中搜索上一个和下一个记录.在这里,我编辑前一个和下一个记录的字段.现在,问题是:如果我插入另一个项目,例如,下一个项目是"Obj1",我必须找到并编辑它,但我找不到它,因为我没有保存我的更改.现在更清楚了吗?

c# sql entity-framework savechanges

9
推荐指数
1
解决办法
6895
查看次数

从应用程序的其他类使用"FindResource"

我必须使用FindResource("key")方法.在我的MainWindow类中,它可以工作.

我要在另一个类中使用它,但我不能用MainWindow类的新实例来引用它,因为这给了我一些问题(现在不相关).

所以,我在我的MainWindow类中声明了一个静态方法,但是,因此我不能在静态方法中使用"this",我写道:

public static string getFromDict(string key){
    View.MainWindow v = new View.MainWindow();
    return v.getResource(key);
}

private string getResource(string key) {
    return this.FindResource(key).ToString();
}
Run Code Online (Sandbox Code Playgroud)

这仍然给我带来了问题,因为正如你所看到的,我在这里也创建了一个新的MainWindow实例.

那么,从另一个类,我如何使用findResource方法?(我想要阅读的资源是xml中的一些词条,包含在项目中:我已经在其他代码中正确阅读了它们).

c# xml wpf resources static

7
推荐指数
1
解决办法
4886
查看次数

使用jquery在POST请求后重定向

我正在使用Django.我有一个HTML页面,我在那里做一些Javascript的东西,然后我用这种方式做一个jQuery帖子:

$.ajax({ 
  url: '/xenopatients/measurement/qual', 
  type: 'POST', 
  data: {'obj':data}, 
  dataType: 'json', 
  contentType: "application/json; charset=utf-8", //questo ok 
}); 
Run Code Online (Sandbox Code Playgroud)

在此帖子请求之后,我的Django视图正确处理了此URL的调用.我想要它做的是处理数据,将用户发送到另一页,并将此数据发送到新页面.问题是我不能像往常一样在Python中执行重定向,就像代码忽略重定向一样.

我的Python代码是:

@csrf_protect 
@login_required#(login_url='/xenopatients/login/') 
def qualMeasure(request): 
    name = request.user.username 
    print "enter" 
    if request.method == 'POST': 
        print request.POST 

        if "obj" in request.POST: 
            print 'obj received' 
            return render_to_response('mice/mice_status.html', RequestContext(request)) 

    return render_to_response('measure/qual.html', {'name': name, 'form': QualMeasureForm()}, RequestContext(request)) 
Run Code Online (Sandbox Code Playgroud)

我发现更改页面的唯一方法是在上面的代码之后通过Javascript:

top.location.href = "/xenopatients/measurement";
Run Code Online (Sandbox Code Playgroud)

但是我不知道在使用这种方法时如何传递我需要的数据.

HTML代码:

<form action="" method=""> 
  <table id="dataTable" width="100%" border="1"></table><br> 
  <script language="javascript"> 
    document.measureForm.id_barcode.focus(); 
    document.measureForm.Add.disabled = false; 
    $('#dataTable').tablePagination({}); 
  </script> 
  <input type="button" name="save" value="Save Measure Serie" onclick="table2JSON('dataTable')"/> 
</form> 
Run Code Online (Sandbox Code Playgroud)

PS我也试过 …

django ajax jquery post redirect

6
推荐指数
1
解决办法
3万
查看次数

Google折线图:我可以插入误差线吗?

欢呼

我使用的折线图是使用Google API创建的绘制图(此图)。

运作良好,但现在有问题。我必须插入一些误差线或类似的东西(例如,variance)。可以使用Google API吗?我该怎么做?

我的目标是有一些像这样

linechart google-api google-visualization

5
推荐指数
1
解决办法
2221
查看次数

使用ClickOnce安装我的应用程序-缺少dll消息(尽管未要求)

我已经完成了clickOnce安装程序。似乎还可以,但我有一个小问题。

我已将SQL Server 2008 Express设置为必备软件。

如果将其更改为2012,它将正确安装先决条件,但是,当开始安装我的应用程序时,它将出现错误,搜索Microsoft.SqlServer.management.dmf版本10.0.0.0。

奇怪的是,阅读此链接,SQL Server 2008需要版本10(而2012需要版本11)。

那么,为什么要求版本10?我正在空白虚拟机上尝试,所以我确定没有安装任何东西。

我还读了这篇文章,回答者说去了Project Properties> Publish> Application Files并删除了一些库(我已经删除了microsoft.sqlServer库)。我已经做到了,但是什么都没有!它仍然要求Microsoft.SqlServer.management.dmf。它与共享管理对象一起安装在系统中,但是为什么要求提供sql server 2008的版本?

至少如何发现谁需要它?

在发布部分下面是我的应用程序文件。如您所见,我排除了一些库。以前,它们被设置为先决条件。

在此处输入图片说明

.net c# sql-server wpf clickonce

5
推荐指数
1
解决办法
2024
查看次数

实体框架 6 的“按查询分组”中的“案例语句”

我正在使用 Entity Framework 6 和 SQL Server 2014。

我需要按查询进行分组。这很容易,但现在我需要一个特例。这里有一个例子来阐明我需要什么。

例子:

Table

ID  COLOR    NAME  
1    red1    aaa
2    red2    vvv
3    green1  fff
4    green2  ggg 
5    yellow  eee
Run Code Online (Sandbox Code Playgroud)

让我们假设我必须按颜色分组,有一个债券:我想将red1red2的值分组为redgreen1green2green

因此,如果我进行groupby&count查询,结果将是:

  Output 

  COLOR    COUNT
  red      2
  green    2
  yellow   1
Run Code Online (Sandbox Code Playgroud)

实体框架可以吗?如何?

这是我的团体之一。我可以修改它以达到我的目标还是做一些不同的事情?

var groupedData = MyData.GroupBy(x => x.Products.NAME).Select(g => new { Product = g.Key, Total = g.Sum(x => x.IMPORT), Quantity = g.Sum(x => x.QTY) …
Run Code Online (Sandbox Code Playgroud)

c# sql sql-server entity-framework group-by

5
推荐指数
1
解决办法
1777
查看次数

解密 TripleDES:指定的密钥是已知的弱密钥,无法使用

为什么此代码会返回弱键错误

static public byte[] TDESDecrypt(byte[] toDecrypt, byte[] key, CipherMode mode = CipherMode.ECB, PaddingMode padding = PaddingMode.None)
{
    TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
    tdes.Key = key;
    tdes.Mode = mode;
    tdes.Padding = padding;
    ICryptoTransform cTransform = tdes.CreateDecryptor();
    byte[] resultArray = cTransform.TransformFinalBlock(toDecrypt, 0, toDecrypt.Length);
    tdes.Clear();
    return resultArray;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试执行“tdes.Key = key”行时,出现错误

deriveSessionKeyIS System.Security.Cryptography.CryptographyException:指定的密钥是 TripleDES 的已知弱密钥,无法使用

为什么?我尝试的密钥是随机的,但测试的密钥之一是FB13347FE570DC4FFB13347FE570DC4F。哪里有问题?

c# cryptography des key tripledes

4
推荐指数
1
解决办法
4996
查看次数

MVMVM WPF:在保持输入元素焦点之前更新值绑定

我的xaml中有这个元素(DevExpress项目):

<dxe:ComboBoxEdit IsTextEditable="False" EditValue="{Binding IDTIPOCONN}" 
     ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=Window},Path=DataContext.ttc}"  />
Run Code Online (Sandbox Code Playgroud)

所有绑定都是正确的,并且当我更改值时,我从ViewModel触发了一些事件。

我的问题是仅当我离开comboBox的焦点时才执行值的更新。相反,我需要在值更改后执行我的操作,然后再离开它的焦点。

我该怎么做?我需要这样做是因为从列表中选择一个或另一个,我向用户显示了一些隐藏的元素。

c# wpf xaml binding mvvm

3
推荐指数
1
解决办法
1125
查看次数

Phonegap 打开导航器 err_unknown_url_scheme

我创建了适用于 iOS 和 Android 的应用程序。

该应用程序显示了带有一些兴趣点的地图。如果用户点击其中之一,应用程序会尝试打开导航器。

onclick="cordova.InAppBrowser.open("https://maps.google.com/maps?daddr=45.29062,8.055613519999952&mode=transit", "_blank", "location=yes")"
Run Code Online (Sandbox Code Playgroud)

上面的代码是一个例子。我从应用程序中调用该 url,并且 cordova inappbrowser 正确打开导航器预览。

当我点击开始旅行时,浏览器会要求您打开谷歌地图应用程序。如果你说“不”,它不会做任何事情。因此,您被迫单击“是”。

单击“是”后,在 iOS 中可以正常工作,但在 Android 中我看到以下错误: 在此输入图像描述

请注意,我无法管理用户单击 POI 时显示的“导航”按钮。此外,如果我单击该链接,我的手机会正确打开谷歌地图应用程序,但如果我在浏览器中复制并粘贴该网址,我会看到导航器预览,而没有“开始”按钮。

maps android navigator phonegap

3
推荐指数
1
解决办法
2226
查看次数