客户需要将每个数据更改记录到与进行修改的实际用户的日志记录表中.应用程序使用一个SQL用户来访问数据库,但我们需要记录"真实"用户ID.
我们可以在t-sql中通过为每个表插入和更新编写触发器,并使用context_info来存储用户ID来完成此操作.我们将用户标识传递给存储过程,将用户标识存储在contextinfo中,触发器可以使用此信息将日志行写入日志表.
我无法找到使用EF在哪里或如何做类似的地方或方式.所以主要目标是:如果我通过EF对数据进行更改,我想以半自动的方式将确切的数据更改记录到表中(因此我不想在每个字段之前检查更改)保存对象).我们正在使用EntitySQL.
不幸的是,我们必须坚持SQL 2000,因此SQL2008中引入的数据更改捕获不是一个选项(但也许这对我们来说也不是正确的方法).
任何想法,链接或起点?
[编辑] 一些注意事项:通过使用ObjectContext.SavingChanges事件处理程序,我可以得到我可以注入SQL语句来初始化contextinfo的点.但是我不能混合使用EF和标准SQL.所以我可以获得EntityConnection但我无法使用它执行T-SQL语句.或者我可以获取EntityConnection的连接字符串并基于它创建一个SqlConnection,但它将是一个不同的连接,因此contextinfo不会影响EF的保存.
我在SavingChanges处理程序中尝试了以下内容:
testEntities te = (testEntities)sender;
DbConnection dc = te.Connection;
DbCommand dcc = dc.CreateCommand();
dcc.CommandType = CommandType.StoredProcedure;
DbParameter dp = new EntityParameter();
dp.ParameterName = "userid";
dp.Value = textBox1.Text;
dcc.CommandText = "userinit";
dcc.Parameters.Add(dp);
dcc.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)
错误:EntityCommand.CommandText的值对StoredProcedure命令无效.与SqlParameter相同而不是EntityParameter:SqlParameter不能使用.
StringBuilder cStr = new StringBuilder("declare @tx char(50); set @tx='");
cStr.Append(textBox1.Text);
cStr.Append("'; declare @m binary(128); set @m = cast(@tx as binary(128)); set context_info @m;");
testEntities te = (testEntities)sender;
DbConnection dc = te.Connection;
DbCommand dcc = dc.CreateCommand();
dcc.CommandType = CommandType.Text;
dcc.CommandText …Run Code Online (Sandbox Code Playgroud) 我最近一直在和Go一起工作,我想到也许可以将相同的CSP模型构建到未来的.NET版本中.我不是简单地讨论一个新的库,它使用现有的线程原语来提供通道类型和类似的编程经验/模型; 我的意思是在整个VM和编译器中实现模型,以生成与Go相当的可执行代码(我相信Go生成在事件循环上执行的代码)
这可行吗?以前有人谈过吗?......或者我一直在"喝太多的kool-aid".在完全理解如何实现这一点方面,我绝对不会深入了解这一点.
Clojure拥有这个令人惊叹的库,它实现了Tony Hoare的 通信顺序进程,称为core.async.
Haskell似乎有一个名为chp的等价物.(不确定它是否在GHC 7.8下编译).
我的问题是,是否有相当于Haskell的Scala CHP?
我知道我可以通过使用insertAdjacentHTML和这样的afterbegin位置在页面前面添加一些html :
var x = document.getElementsByTagName("body")[0];
x.insertAdjacentHTML('afterbegin','<!-- GTM code goes here -->');
Run Code Online (Sandbox Code Playgroud)
这是问题所在:
head它,它将无法工作,因为身体尚不存在.body,那已经太晚了.是否有类似的东西可以进入头部,一旦创建了body标签就会初始化?
我在mysql数据库中有一个表"travel_data",其中包含三个相关列:
+--------------------------+
| from | to | date |
+--------------------------+
|City1 | City2 | 2015-12-12|
|City3 | City4 | 2016-12-12|
|City1 | City2 | 2015-06-06|
|City3 | City4 | 2017-01-01|
+--------------------------+
Run Code Online (Sandbox Code Playgroud)
(加上我目前不需要的其他一些colums).
我正在寻找一个查询,允许我在一个查询中尽可能获得每行每个行程的第一个和最后一个日期,例如:
+------------------------------------------------+
|from | to | firstTravelDate | LastTravelDate|
+------------------------------------------------+
|City1 | City2 | 2015-06-06 | 2015-12-12 |
|City3 | City4 | 2016-12-12 | 2017-01-01 |
+------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
我在一个查询中搜索"mysql select maximum minimum",但是那里的解决方案,因为它们起作用,每个表返回mix/max; 我需要from/to的每个可能组合的最小/最大值.这让我感到困惑,我甚至没有开始工作查询.这只需要在MySql上运行,因此不需要符合标准的解决方案.
(欢迎对标题进行改进,我认为标题不完全涵盖实际问题).
.net ×1
clojure ×1
core.async ×1
go ×1
haskell ×1
html ×1
javascript ×1
logging ×1
mysql ×1
scala ×1