小编Pet*_*teH的帖子

我应该避免使用sp_getAppLock吗?

我有一个存储过程,我想确保它不能同时执行.

我的(多线程)应用程序通过此存储过程对基础表执行所有必要的工作.

imo,锁定表本身是一个不必要的极端行动,所以当我发现sp_GetAppLock,基本上强制执行一个关键部分时,这听起来很理想.

我的计划是将存储过程包含在事务中并设置spGetAppLock事务范围.代码已成功编写和测试.

该代码现已提交审查,我被告知我不应该调用此函数.然而,当问起明显的问题"为什么不呢?"时,我得到的唯一理由是非常主观的,与任何形式的锁定都很复杂.

我不一定买这个,但我想知道是否有人有任何客观原因我应该避免这个结构.就像我说的那样,根据我的情况,一个关键部分对我来说听起来很理想.

TIA,皮特

进一步的信息:一个应用程序位于此顶部,有2个线程T1和T2.每个线程正在等待不同的消息M1和M2.所涉及的业务逻辑表明只有M1和M2都到达后才能进行处理.存储过程记录Mx已到达(插入),然后检查My是否存在(选择).内置锁定可以确保插入连续发生.但选择也需要连续发生,我认为我需要在这里做一些超出内置功能的事情.

为了清楚起见,我希望"处理"恰好发生一次.所以我无法承受存储过程返回误报或漏报.我担心如果存储过程连续快速运行两次,那么两个"选择"可能会返回数据,表明它适合执行处理.

t-sql sql-server sql-server-2008

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

如何处理XML命名空间

我有一种感觉,这个问题很简单,但是自从我做了任何xslt以来可能有多年,所以也许有人可以提供帮助?

我有一块由.net类DataContractSerializer生成的xml,我需要使用xslt从这个xml中提取数据,最后得到一些html.对我来说复杂的事情是命名空间的大量使用......

xml的片段如下所示:

<FundDeal xmlns:i="http://www.w3.org/2001/XMLSchema-instance"  xmlns="http://schemas.datacontract.org/2004/07/Guide.Rx.BusinessObjects.Deal">
    <Id xmlns="http://schemas.datacontract.org/2004/07/Guide.BusinessObjects.Deal">DEAL12345</Id>
    <Account xmlns:d2p1="http://schemas.datacontract.org/2004/07/Guide.Rx.BusinessObjects.Account">
        <d2p1:AlternateId i:nil="true"/>
        <d2p1:Designation>XXX</d2p1:Designation>
        <d2p1:Name>QWERTY</d2p1:Name>
        <d2p1:Number>12345678</d2p1:Number>
        <d2p1:Status i:nil="true"/>
    </Account>
    <Agent xmlns:d2p1="http://schemas.datacontract.org/2004/07/Guide.Rx.BusinessObjects.Account">
        <d2p1:Id>54321</d2p1:Id>
        <d2p1:Name>ASDFG</d2p1:Name>
        <d2p1:Status>Active</d2p1:Status>
    </Agent>
    ....
</FundDeal>
Run Code Online (Sandbox Code Playgroud)

现在,我需要通过样式表来转换这个xml,并且发现它非常艰难.我认识到xsl需要它自己对所涉及的命名空间的引用,并且可以使用以下xsl轻松地提取上面的Deal Id之类的内容:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:ms="urn:schemas-microsoft-com:xslt"
    xmlns:grbd="http://schemas.datacontract.org/2004/07/Guide.Rx.BusinessObjects.Deal"
    xmlns:gbd="http://schemas.datacontract.org/2004/07/Guide.BusinessObjects.Deal"
    xmlns:grba="http://schemas.datacontract.org/2004/07/Guide.Rx.BusinessObjects.Account">
    <xsl:output indent="yes" omit-xml-declaration="yes" method="html"/>
    <xsl:template match="/">
      <html>
        <head>
          <!-- some styles here -->
        </head>
        <body>
          <table cellpadding="5" cellspacing="5" border="0">
            <tr>
              <td class="SectionTitle" colspan="2">
                <xsl:text>Deal Cancellation Notification - </xsl:text>
                <xsl:value-of select="//ggbd:Id"/>
              </td>
            </tr>
          </table>
        </body>
      </html>
    </xsl:template>
</xsl:stylesheet>   
Run Code Online (Sandbox Code Playgroud)

但我正在努力阅读诸如帐户名之类的内容,因为似乎有多个名称空间正在进行中.

任何人都可以告诉我访问的xpath(a)帐户名称,以及(b)代理商名称?我认为看到如何访问这些将可能允许我访问我需要的一切.

非常感谢,皮特

xml xslt namespaces transform xml-namespaces

2
推荐指数
1
解决办法
1173
查看次数

在c#中访问实例级自定义属性

想象一下,我有以下代码:

class A
{
    [UsefulAttribute("foo")]
    B var1;
    [UsefulAttribute("bar")]
    B var2;

    ...
}


class B
{
    public string WriteSomethingUseful()
    {
        ?????
    }
}  
Run Code Online (Sandbox Code Playgroud)

我的问题是,它需要在什么代码中放入????? 这样,当我调用var1.WriteSomethingUseful时,我得到一个foo的输出,当我调用var2.WriteSomethingUseful时,我得到一个bar的输出?

我有一种感觉,这是一个非常直截了当的问题,我认为我的主要问题是我通过长时间的思考让自己陷入混乱状态!

说真的,我定义了UsefulAttribute,并意识到部分代码必须是GetCustomAttributes(typeof(UsefulAttribute)...)调用.我感到困惑的是如何在实际实例上而不是在类型级别上提取这些值.

非常感谢,皮特

.net c# reflection custom-attributes

2
推荐指数
1
解决办法
1250
查看次数