我在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)
我在几年内使用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",我必须找到并编辑它,但我找不到它,因为我没有保存我的更改.现在更清楚了吗?
我必须使用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中的一些词条,包含在项目中:我已经在其他代码中正确阅读了它们).
我正在使用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我也试过 …
我已经完成了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的版本?
至少如何发现谁需要它?
在发布部分下面是我的应用程序文件。如您所见,我排除了一些库。以前,它们被设置为先决条件。

我正在使用 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)
让我们假设我必须按颜色分组,但有一个债券:我想将red1和red2的值分组为red,green1和green2为green。
因此,如果我进行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) 为什么此代码会返回弱键错误?
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。哪里有问题?
我的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的焦点时才执行值的更新。相反,我需要在值更改后执行我的操作,然后再离开它的焦点。
我该怎么做?我需要这样做是因为从列表中选择一个或另一个,我向用户显示了一些隐藏的元素。
我创建了适用于 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 时显示的“导航”按钮。此外,如果我单击该链接,我的手机会正确打开谷歌地图应用程序,但如果我在浏览器中复制并粘贴该网址,我会看到导航器预览,而没有“开始”按钮。
c# ×7
wpf ×3
sql ×2
sql-server ×2
.net ×1
ajax ×1
android ×1
audit ×1
audit-trail ×1
binding ×1
clickonce ×1
cryptography ×1
des ×1
django ×1
google-api ×1
group-by ×1
jquery ×1
key ×1
linechart ×1
maps ×1
mvvm ×1
navigator ×1
phonegap ×1
post ×1
redirect ×1
resources ×1
savechanges ×1
static ×1
tripledes ×1
xaml ×1
xml ×1