小编Mal*_*ick的帖子

如何在winform应用程序中正确使用DBContext/EF?

winforms应用程序中关于EF的信息并不多。在他的 msdn 页面上,我们发现:

使用 Windows Presentation Foundation (WPF) 或 Windows 窗体时,请为每个窗体使用一个上下文实例。这使您可以使用上下文提供的更改跟踪功能。

所以我认为我不应该使用:

using (var context = new MyAppContext()) 
{     
    // Perform operations 
}
Run Code Online (Sandbox Code Playgroud)

但我应该在每个MyAppContext表单的加载时创建一个新的,并在表单关闭时(也可以选择之前)释放它。SaveChange()

这是对的吗 ?

如果是,我如何在运行时更改整个应用程序的数据库?

c# entity-framework winforms dbcontext

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

Rapidjson,在另一个数组的数组中获取一个值

我需要使用rapidjson稀疏这种类型的json:

{
    "errors":{},
    "id":2326625,
    "source_code":"GOOG",
    "data":
    [
        ["2010-01-12",-0.010565362832445,-0.010432881793793,-0.010144243731464,-0.017685262281432,-0.3275071624503],
        ["2010-01-13",-0.036084889870791,-0.016333087890756,-0.024003268530183,-0.0057299789787753,0.33911818660036],
        ["2010-01-14",0.012849006806501,0.0098673018033346,0.015523616828298,0.0047058823529412,-0.34735779281787],
        ["2010-01-15",0.013166015223205,-0.0010781671159029,-0.0081756037236783,-0.016698910497913,0.28200124010685]
    ]
}
Run Code Online (Sandbox Code Playgroud)

要获得id"source_code"的值非常简单:

d.Parse<0>(json); printf("source_code" = %s\n", document["source_code"].GetString());

但是我无法成功检索数据值.例如,我希望能够检索"2010-01-12"和"-0.010565362832445"(数据中第一个数组的第一个值).

你有什么主意吗 ?

c++ json rapidjson

3
推荐指数
1
解决办法
6697
查看次数

如何调试进程外服务器的COM C ++?(客户端:Excel vba)

我不知道如何使用Visual Studio 2015调试COM ATL C ++进程外exe服务器。

对于COM ATL DLL没问题,当我调用COM dll时会自动触发断点。但是,当我尝试调试EXE服务器时,调试器没有中断。确实,仅在需要时才加载exe服务器,并且在客户端启动时不加载exe服务器的调试符号。

我的客户端(称为COM服务器)是Excel VBA(我已经通过工具/参考在VBA编辑器中将对com exe的引用添加到了该文件中)。要对其进行调试,我在Visual Studio Debug命令中将路径设置为Excel.exe,并作为参数将路径设置为xlsm文件。然后,我只是调用在Excel中调用VBA代码。它适用于com DLL,但不适用于COM Exe。我还尝试通过将VS附加到Excel上,但没有成功。

我已经找到了这篇文章(Windows COM-如何调试COM服务器),这似乎是由提升/权限问题引起的,但是我尝试了建议的答案,但是没有用。

有谁能帮助我吗?

您如何调试进程外的com服务器?

是否有必要将调试器附加到使用EXE服务器的客户端(因此以我为例)?

com excel vba atl excel-vba

3
推荐指数
1
解决办法
445
查看次数

64位.Net应用程序中的tlbinf32.dll

似乎没有64位版本的tlbinf32.dll,这个(旧的)COM DLL用于提取COM组件的信息。(请参阅此SO答案

我需要从64位C#应用程序访问它。我没有设法将其托管到一个单独的代理流程中,但仍在获取异常 REGDB_E_CLASSNOTREG。我的代码适用于x86平台,但我也必须实现64位。

任何人都可以通过提供逐步过程以将其启动到代理(Dllhost)或另一种使用它的方式来帮助我吗?

您知道浏览本机COM Dll的所有方法,类..的更好的选择吗?

com tlbinf32

3
推荐指数
1
解决办法
1256
查看次数

从VBA调用xll UDF

我想从VBA调用我的一个用户定义函数.

我的用户定义函数在C++中声明:

XLOPER12*WINAPI HelloWorld()noexcept{
    THROWS();
    static XLOPER12 res=[](){
        static std::array<wchar_t,13>str={
            11,'H','e','l','l','o',' ','W','o','r','l','d','\0'};
        XLOPER12 tmp;
        tmp.xltype=xltypeStr;
        tmp.val.str=str.data();
        return tmp;}();
    return &res;}
Run Code Online (Sandbox Code Playgroud)

这是来自该字段的实际函数的简化版本,可以返回String或double或偶数数组.当然这里我只返回一个String,但是这限制了我的UDF的返回类型LPXLOPER12.

我可以成功注册我的函数xlfRegister指定pxTypeText"U$".然后我可以从Excel调用我的UDF:

=HelloWorld()
Run Code Online (Sandbox Code Playgroud)

它的工作原理!


如果我尝试按照此处的建议从VBA调用我的函数:

Sub macro_test()
    Dim hw As Variant
    hw = Application.Run("D:\Path\MyAddIn.xll!HelloWorld")
End Sub
Run Code Online (Sandbox Code Playgroud)

我从Application.run收到一条错误消息:

运行时错误'1004':应用程序定义的错误或对象定义的错误


如果我尝试按照此处的建议从VBA调用我的函数:

Private Declare PtrSafe Function HelloWorld Lib "C:\Path\MyAddIn.xll" () As Variant

Sub macro_test()
    Dim hw As Variant
    hw = HelloWorld()
End Sub
Run Code Online (Sandbox Code Playgroud)

我得到一个空结果而不是"Hello World".


我究竟做错了什么 ?

杂项信息: …

c++ excel vba excel-vba xll

3
推荐指数
1
解决办法
639
查看次数

如何在Visual Studio中仅在字符串文字中搜索单词?

我需要在我的C#解决方案中查找作为字符串文字一部分的单词的所有出现。因此,我想将搜索范围限制为带引号的字符序列中的单词。

例如,如果我搜索的单词magic,以下行应该不会出现在结果中:

string magic = "hello dad" 
Run Code Online (Sandbox Code Playgroud)

,相反,应该找到以下行:

string test = "this is a magic line"
Run Code Online (Sandbox Code Playgroud)

你能帮我吗?

c# visual-studio

3
推荐指数
1
解决办法
1391
查看次数