小编Zom*_*eep的帖子

仅在SQL Server中满足条件时才触发

我希望这对任何SQL人来说都是一个简单的问题...

我们有一个保存系统配置数据的表,它通过触发器绑定到历史表,因此我们可以跟踪谁更改了什么,何时更改.

我需要在此表中添加另一个值,但它会经常从代码中更改,并且要求我们不跟踪它的历史记录(我们不希望用数千个阻塞它的表)每天更新.

目前,我们的触发器有点像这样......

CREATE TRIGGER 
    [dbo].[SystemParameterInsertUpdate]
ON 
    [dbo].[SystemParameter]
FOR INSERT, UPDATE 
AS
  BEGIN
    SET NOCOUNT ON
      INSERT INTO SystemParameterHistory 
      (
        Attribute,
        ParameterValue,
        ParameterDescription,
        ChangeDate
      )
    SELECT
      Attribute,
      ParameterValue,
      ParameterDescription,
      ChangeDate
    FROM Inserted AS I
END
Run Code Online (Sandbox Code Playgroud)

如果Attribute colum值以特定字符串为前缀(例如"NoHist_"),我希望能够添加一些逻辑来阻止它创建记录

鉴于我几乎没有使用触发器的经验,我想知道如何最好地实现这个...我已经尝试过如下的where子句

where I.Attribute NOT LIKE 'NoHist_%'
Run Code Online (Sandbox Code Playgroud)

但它似乎没有用.该值仍会复制到历史记录表中.

您可以提供的任何帮助将不胜感激.


好的 - 正如Cade Roux预测的那样,这次失败引起了多次更新.我将不得不对此采取新方法.有没有人有任何其他建议,拜托?


伙计们 - 请在这里教育我......为什么LEFT()在这种情况下会更喜欢LIKE?我知道我接受了答案,但我想知道我自己的教育.

sql-server triggers

27
推荐指数
4
解决办法
11万
查看次数

芒果应用瓷砖 - 删除回来

这是一个简单的问题,看似简单的任务,但我找不到任何关于如何完成我需要做的事情的信息.

我有一个应用程序,其主要图块(固定时)有时需要是默认的单面图块,有时需要在图块背面显示信息.我可以从ScheduledActionService成功添加BackBackgroundImage,BackContent和BackTitle,但是当不再需要它们时我无法删除它们.这不是辅助磁贴,因此我无法删除它并重新创建并重新添加它.

有没有人知道是否可以将双面贴砖恢复为单面通过代码,如果是这样,我怎么能实现这种行为呢?

编辑

从StandardTileData对象应用的设置是附加的 - 例如,如果您指定标题,则所有其他元素保持不变,只更新标题.我试图将出现在tile背面的三个参数设置为null并取得部分成功.效果是背景图像,标题文本和内容文本都被删除,但是图块仍然会翻转以显示完全空的反面.

再次编辑

因此,查看文档时,磁贴背面的行为与前端不同.将后面的内容或后缀设置为string.Empty将删除它们.一切都很好.但是,它确实说"如果设置为空URI,则不会显示BackBackgroundImage.".我如何创建一个空的Uri?我尝试了新的Uri(字符串,空),但是这会引发一个关于尝试创建一个空Uri的异常 - 这正是我想要做的.

tile windows-phone-7

20
推荐指数
1
解决办法
2239
查看次数

WCF配置 - 将其从app.config中分离出来

我有一个特定的要求,即从主app.config文件中删除所有客户端WCF配置(<system.serviceModel>),并将其删除到单独的XML文件中.我希望看到的行为类似于使用File =""指令在appSettings部分中提供的行为.事实上,我希望能够为每个消费的服务指定一个单独的文件...

我知道我可以构建一个自定义的ChannelBuilder工厂,它从XML文件(或其中一系列文件)中读取配置数据,但我更愿意仍然让客户端"自动发现"配置数据.

一些基本的谷歌搜索似乎暗示这是不可能的,但我想从SO获得视图 - 这里有人知道我无法找到的东西吗?:)

编辑::

蒂姆·斯科特和davogones都与一个可能的建议上来了,但一个依赖于分裂system.serviceModel节的组成部分出单独的文件.虽然这并不完全符合我要找的(我想定义每个服务及其相关的元素谨慎,每一个服务文件),它一个选项.我会调查并让你知道我的想法.

.net configuration wcf app-config

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

基于计时器的事件触发器

我目前正在开发一个具有特定要求的项目.这些简要概述如下:

  • 从外部Web服务检索数据
  • 数据存储在SQL 2005中
  • 数据通过Web GUI进行操作
  • 与Web服务通信的Windows服务与我们的内部Web UI没有耦合,除了通过数据库.
  • 与Web服务的通信需要基于时间,并且通过Web UI上的用户干预来触发.

用于Web服务通信触发的当前(预生产前)模型是通过存储从手动干预生成的触发请求的数据库表.我真的不想拥有多个触发机制,但希望能够根据调用时间使用触发器填充数据库表.我认为有两种方法可以实现这一目标.

1)调整触发表以存储两个额外参数.一个是"这是基于时间还是手动添加?" 和可空字段来存储时序细节(确切的格式).如果它是一个手动创建的触发器,则在触发器触发时将其标记为已处理,但如果它是定时触发器则不会.
或者
2)创建第二个Windows服务,以定时间隔即时创建触发器.

第二种选择对我来说似乎是一种软糊涂,但是选项1的管理可能很容易变成编程噩梦(你怎么知道表的最后一次轮询是否返回了需要触发的事件,你怎么能阻止它重新触发下次投票)

我很感激,如果有人可以花几分钟时间来帮我决定哪条路线(这两条路线中的一路,或者可能是第三条,未列出的路线).

sql service triggers web-services timer

15
推荐指数
1
解决办法
2384
查看次数

订阅WCF服务中的事件

我需要对WCF服务的功能进行一些实时报告.该服务是在Windows应用程序中自托管的,我的要求是在客户端调用某些方法时向主机应用程序报告"实时".

我最初的想法是在服务代码中发布一个"NotifyNow"事件,并在我的调用应用程序中订阅该事件,但这似乎不可能.在我的服务代码(实现,而不是接口)中,我尝试添加以下内容

public delegate void MessageEventHandler(string message);
public event MessageEventHandler outputMessage;

void SendMessage(string message)
{
    if (null != outputMessage)
    {
        outputMessage(message);
    }
}
Run Code Online (Sandbox Code Playgroud)

每当我需要通知主机应用程序某些操作时调用SendMessage方法.(这是基于我记得winforms应用程序中的这种形式间通信,我的记忆可能让我失望了......)

当我尝试在我的主机中挂钩事件处理程序时,我似乎无法弄清楚如何附加到事件...我的托管代码(简而言之)

service = new ServiceHost(typeof(MyService));
service.outputMessage += new MyService.MessageEventHandler(frm2_outputMessage);
  // the above line does not work!
service.Open();
Run Code Online (Sandbox Code Playgroud)

(包裹在try/catch中).

任何人都可以通过告诉我如何使这种方法工作或指向我更好的方式来帮助.

TIA

wcf delegates event-handling

11
推荐指数
2
解决办法
2万
查看次数

数据层最佳实践

我正在与一位同事讨论在新应用程序中实现数据层的最佳方法.

一种观点是数据层应该知道业务对象(我们自己的代表实体的类),并且能够本地使用该对象.

相反的观点是数据层应该是对象不可知的,并且纯粹处理简单的数据类型(字符串,bool,日期等)

我可以看到这两种方法都可能有效,但我自己的观点是我更喜欢前者.这样,如果数据存储介质改变,则业务层不必(必须)改变以适应新数据层.因此,从SQL数据存储区更改为序列化的xml文件系统存储区将是一件微不足道的事情.

我的同事的观点是,数据层不应该知道对象定义,只要数据传递得恰当,就足够了.

现在,我知道这是有可能发起宗教战争的问题之一,但我很感激社区对你如何处理这些事情的任何反馈.

TIA

.net n-tier-architecture

10
推荐指数
1
解决办法
3271
查看次数

WCF服务 - 向后兼容性问题

我刚刚开始创建一些WCF服务,但我要求它们向后兼容遗留(.NET 1.1和2.0)客户端应用程序.

我已经设法让服务正常运行3.0和更高版本的客户端,但是当我使用basicHttpBinding端点发布服务时(我认为这是我需要的兼容性所需),服务会重构我的方法签名.例如

public bool MethodToReturnTrue(string seedValue);
Run Code Online (Sandbox Code Playgroud)

在客户端应用程序中显示为

public void MethodToReturnTrue(string seedValue, out bool result, out bool MethodToReturnTrueResultSpecified);
Run Code Online (Sandbox Code Playgroud)

我已尝试在app.config中为我的自托管控制台应用程序考虑的每个配置参数,但我似乎无法按预期使此功能.我想这可能会导致我的期望存在缺陷这一事实,但我很惊讶WCF服务无法将bool返回类型处理为下级客户端.

我当前的app.config看起来像这样.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>  
  <system.serviceModel>
    <services>
      <service behaviorConfiguration="MyServiceTypeBehaviors" Name="MyCompany.Services.CentreService.CentreService">
        <clear />
        <endpoint address="http://localhost:8080/CSMEX"    binding="basicHttpBinding" bindingConfiguration="" contract="IMetadataExchange" />
        <endpoint address="http://localhost:8080/CentreService" binding="basicHttpBinding" bindingName="Compatible" name="basicEndpoint" contract="MyCompany.Services.CentreService.ICentreService" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="MyServiceTypeBehaviors" >
            <serviceMetadata httpGetEnabled="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>
Run Code Online (Sandbox Code Playgroud)

有人可以提出建议吗?

.net c# wcf web-services backwards-compatibility

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

Midi在.Net内实施

有没有人对在C#Winforms中编写基于MIDI的应用程序有任何指导或建议?我最近买了一个新的效果踏板,它有一个完整的MIDI实现(或者让我相信),但制造商认为不适合不发布图书管理员/补丁编辑应用程序.

除了将键盘插入另一台MIDI设备之外,我几乎没有MIDI的经验,但它不会那么难,对吧?;-)

提前致谢.

c# midi sysex

8
推荐指数
1
解决办法
1542
查看次数

阻止其他开发人员在类中使用基本方法

我有一个使用文件系统实体来操作数据的类.我们有几种专门设计用于(尝试)处理我们使用此方法遇到的一些问题的方法(文件锁定,不存在的文件等).理想情况下,如果其他开发人员尝试直接通过System.IO访问文件系统而不是使用帮助程序方法,我希望能够发出警告.

这可能吗?我正在寻找的行为是有效地标记File.ReadAllText()等方法,就像它们已经过时一样,但仅限于此项目(非解决方案范围内).

我已经做了一些挖掘,看起来我唯一的选择是"告诉他们确保他们使用你的方法".我希望有人可以给我一个不同的,更有帮助的答案.:)

--EDIT--自定义StyleCop或FxCop规则的建议很好,但遗憾的是在这种情况下不是不切实际的(并非部门中的每个开发人员都使用这些优秀的工具),并且执行文件访问的合法方法确实使用System.IO .将"忽略"属性添加到合法方法中也是一个危险的想法.如果有人看到我如何"破坏"我自己的规则,他们可能会将属性复制到他们自己的方法中.

c# attributes obsolete

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

CakePHP - 如何将页面标题设置为项目名称?

好的,所以我正在尝试自学CakePHP框架,我正在尝试为自己敲一个简单的演示应用程序.

我有控制器,视图和模型都设置和工作,但我想做的事情略多于基本的在线帮助节目.

我有一个guitars_controller.php文件如下...

<?php
class GuitarsController extends AppController {
    var $name = 'Guitars';
    function index() {
        $this->set('Guitars', $this->Guitar->findAll());
        $this->pageTitle = "All Guitars";
    }
    function view($id = null) {
        $this->Guitar->id = $id;
        $this->set('guitar', $this->Guitar->read());
        // Want to set the title here.
    }
}
?>
Run Code Online (Sandbox Code Playgroud)

'Guitar'对象包含一个名为'Name'的属性,我希望能够将其设置为各个页面视图的pageTitle.

任何人都可以指出我是怎么做的,拜托?

注意:我知道在应用程序中设置此类数据的位置存在普遍的分歧,但对我而言,它与数据相关.

php cakephp

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