我有一个SP prc_Foo_Delete,它有以下签名:
ALTER PROCEDURE [prc_Foo_Delete]
@fooIds [int_udtt] READONLY,
@deleteReason int,
@comment nvarchar(512),
@deletedBy nvarchar(128)
Run Code Online (Sandbox Code Playgroud)
int_udtt定义为:
CREATE TYPE [int_udtt] AS TABLE(
[Id] [int] NOT NULL,
PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (IGNORE_DUP_KEY = OFF)
)
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下脚本在Management Studio中调用此SP:
DECLARE @return_value int
EXEC @return_value = [prc_Foo_Delete]
@fooIds = 3,
@deleteReason = 2,
@comment = N'asfdasdf',
@deletedBy = N'asdfa'
SELECT 'Return Value' = @return_value
GO
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:操作数类型冲突:int与int_udtt不兼容.如何在此工具中传入int或int列表以进行调用(我知道如何在代码中执行此操作但不在Management Studio中执行).
我在一个模块(A)中有一个枚举定义,例如SUCCESS = 0,INVALID_REQ = 1等.然后我有另一个dll(模块B),它有自己的状态枚举集.一旦我们在A中添加了一个新的枚举值,我们就必须手动将它添加到B,因为A在.NET中,B是C代码.此外,A中的枚举只是B中状态枚举的一部分(B除了A的状态外,还有自己的内部状态).这似乎是这两个模块之间非常紧密的耦合.有什么建议可以减少它们的耦合吗?谢谢!
我想知道是否存在差异(在性能,内存节省方面)来定义具有默认大小的列表或指定一个列表.
List<object> m_objects = new List<object>();
or
List<object> m_objects = new List<object>(100);
Run Code Online (Sandbox Code Playgroud)
如果添加更多项目,两者都会增加一倍,对吧?
谢谢,
我基于这个例子创建了我的事件源.我的事件源看起来像这样:
[EventSource(Name = "Samples-EventSourceDemos-EventLog")]
public sealed class MinimalEventSource : EventSource
{
public static MinimalEventSource Log = new MinimalEventSource();
[Event(1, Message = "{0} -> {1}", Channel = EventChannel.Admin)]
public void Load(long baseAddress, string imageName)
{
WriteEvent(1, baseAddress, imageName);
}
}
Run Code Online (Sandbox Code Playgroud)
该示例使用代码来模拟安装/卸载过程.从其他一些SO问题中,我看到了另一个使用事件消息文件安装事件源的示例.
但它缺少一些很好的例子,说明如何安装/注册由清单定义的EventSource.我正在调查使用CustomAction做类似的事情:
wevtutil.exe im <EtwManifestManFile> /rf:"EtwManifestDllFile" /mf:"EtwManifestDllFile"
但是想知道你有什么建议吗?
我正在使用C#提供SDK.要启用字段调试,我想使用log4net包含日志记录.如何在不使用App.config的情况下启用配置,因为程序集将是一个DLL?
谢谢,
我想排队一个任务列表,然后在某个事件上执行。代码:
internal class MyClass
{
private Queue<Task> m_taskQueue;
protected MyClass()
{
m_taskQueue = new Queue<Task>();
}
public delegate bool Task(object[] args);
public void EnqueueTask(Task task)
{
m_taskQueue.Enqueue(task);
}
public virtual bool Save()
{
// save by processing work queue
while (m_taskQueue.Count > 0)
{
var task = m_taskQueue.Dequeue();
var workItemResult = task.Invoke();
if (!workItemResult)
{
// give up on a failure
m_taskQueue.Clear();
return false;
}
}
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
每个委托任务可能有自己的参数列表:Task(object[] args)。我的问题是如何将参数传递给任务队列的每个任务?
我有一张包含公共汽车和学生注册信息的表格:
CREATE TABLE [dbo].[BusSignupInstance](
[Id] [int] IDENTITY(1,1) NOT NULL,
[StudentId] [int] NOT NULL,
[BusId] [int] NOT NULL
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)
以下是一些示例数据:
Id StudentId BusId
1 1 1
2 2 1
3 3 1
4 1 2
5 4 2
6 1 3
7 5 3
Run Code Online (Sandbox Code Playgroud)
我想要总线ID的总数.在这种情况下将是:
BusId Num of Students
1 2 (student id 2, 3)
2 1 (student id 4)
3 2 (student id 1, 5)
Run Code Online (Sandbox Code Playgroud)
结果是根据注册的顺序,如果学生1注册三次,只有最后一次有效.
假设我有以下抽象类,并将其用作C++中的"接口":
class IDemo
{
public:
virtual ~IDemo() {}
virtual void Start() = 0;
};
class MyDemo : IDemo
{
public:
virtual void start()
{
//do stuff
}
};
Run Code Online (Sandbox Code Playgroud)
然后在需要有接口句柄的类中(通过注入具体类):
class Project
{
public:
Project(IDemo demo);
private:
IDemo *_demo;
};
Run Code Online (Sandbox Code Playgroud)
我的目的是通过Project的构造函数分配具体的Demo类.此代码无法编译,因为IDemo无法实例化.有什么建议?提前致谢.
我有一个整数输入,功率为2(1,2,4,8等).我希望函数在不使用log()的情况下返回位位置.例如,对于上面的输入,将分别返回{0,1,2,3}对于C#.如果这可以在SQL中完成.
谢谢!