小编Joh*_*dom的帖子

多线程EF6中的主键冲突

我正在开发一个C#控制台应用程序,它从Guild Wars 2 API下载数据并使用Entity Framework 6将其输入到我的数据库中.我正在尝试使用多线程,以便我可以加快输入大量的数据进入我的数据库.

问题是当代码DBContext.SaveChanges()在我的AddRecipes方法中运行到我的调用时,返回以下错误:

违反PRIMARY KEY约束'PK_dbo.Items'.无法在对象'dbo.Items'中插入重复键.重复键值为(0).

以下是与我的问题相关的代码部分:

class Program
{
    private static ManualResetEvent resetEvent;
    private static int nIncompleteThreads = 0;

    //Call this function to add to the dbo.Items table
    private static void AddItems(object response)
    {
        string strResponse = (string)response;

        using (GWDBContext ctx = new GWDBContext())
        {
            IEnumerable<Items> itemResponse = JsonConvert.DeserializeObject<IEnumerable<Items>>(strResponse);

            ctx.Items.AddRange(itemResponse);
            ctx.SaveChanges();
        }

        if (Interlocked.Decrement(ref nIncompleteThreads) == 0)
        {
            resetEvent.Set();
        }
    }

    //Call this function to add to the dbo.Recipes table
    private static …
Run Code Online (Sandbox Code Playgroud)

c# multithreading entity-framework primary-key ef-code-first

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

C中带有typedef结构的未知类型名称

此代码写在名为Monster.c的文件中.我在GameMain.c文件和Monster.c文件中定义了Monster.h.在Monster.h文件中,代码是:

#ifdef MONSTER_H_
#define MONSTER_H_

int Monster(int Selection);
EnemyStats MonsterStats(int Selection);

#endif
Run Code Online (Sandbox Code Playgroud)

然后我在Monster.c文件中创建了我的typedef结构,并创建了函数来返回结构的值.

typedef struct EnemyStats
{
    int EnemyHP;
    int VictoryExp;
    int EnemyLevel;
}
EnemyStats;

EnemyStats MonsterStats(int Selection)
{
    struct EnemyStats value;

    switch(Selection)
    {
        case 1:
            value.EnemyLevel = 1;
            value.VictoryExp = 1;
            value.EnemyHP = 1;
            return value;

        case 2:
            value.EnemyLevel = 1;
            value.VictoryExp = 1;
            value.EnemyHP = 1;
            return value;
        ...
    }
Run Code Online (Sandbox Code Playgroud)

在GameMain.c文件中,我使用此代码尝试访问存储在结构中的信息:

EnemyStats result;
...
printf("%d", result.EnemyLevel);
Run Code Online (Sandbox Code Playgroud)

当我使用gcc GameMain.c Monster.c时,它给了我错误

GameMain.c:40:2:错误:未知类型名称'EnemyStats'

GameMain.c:61:25:错误:请求成员'EnemyHP'不是结构或联合

如果我尝试在EnemyStats结果之前添加struct; 它给了我这个错误.

GameMain.c:在函数'main'中:

GameMain.c:40:20:错误:'结果'的存储大小未知

我不确定我做错了什么.任何帮助表示赞赏.

对于任何不知道的人,我正在使用......说我正在跳过不会影响我描述的情况或代码冗余的代码

c struct typedef

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

即使没有第二次调用 memcpy 也总是复制该值?

我在使用memcpy(). 我想数组的值复制voldv只有一次,然后更改的值v。我调用memcpy()了代码的第一部分,它做了它应该做的事情,但是在第二部分中,当我更改数组v然后再次打印vand oldv... 没有memcpy()第二次调用时,值也oldv发生了变化。为什么 ?编译器将 new 复制voldv而不调用memcpy().

#include<iostream>
#include<stdio.h>
#include <cstring>

using namespace std;

int main()
{   
    double **v,**oldv;

    v = new double*[3];

    for(unsigned int i=0; i<3; i++)
        v[i] = new double[2];

    oldv = new double*[3];

    for(unsigned int i=0; i<3; i++)
        oldv[i] = new double[2];

    for(unsigned int i=0; i<3; i++)
    {
        for(unsigned int j=0; j<2; …
Run Code Online (Sandbox Code Playgroud)

c++ memcpy

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

参数'angle'隐藏字段'float Utils.Transform.float'

我是一个相对较新的C#,在理解这条消息时遇到了一些麻烦,以及它是如何导致问题的.在安装resharper之前没有显示错误,所以我认为它只是糖语法错误?

public void SetTransform(float x, float y, float angle)
{
    SetTransform(x, y);
    this.angle = angle;
}
Run Code Online (Sandbox Code Playgroud)

这个领域本身:

float angle;
Run Code Online (Sandbox Code Playgroud)

我很困惑,方法中的参数如何隐藏字段变量?...

c#

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

使用回拨函数"每个"时出错

因此,我正在尝试重新创建"每个"方法,作为Eloquent JavaScript练习的一部分.我无法弄清楚为什么版本2不起作用(版本1工作).

该书说"只有当谓词对数组的所有元素都返回true时,每个返回都是真的"

版本一

function every(array, test) 
{
    var boolean = true;

    array.forEach(function(ele) 
    {
        if (!test(ele))
            boolean = false;
    });

    return boolean;
}

console.log(every([NaN, NaN, NaN], isNaN));
// ? true
console.log(every([NaN, NaN, 4], isNaN));
// ? false
Run Code Online (Sandbox Code Playgroud)

第二版

function every(array, test) 
{
    array.forEach(function(ele) 
    {
        if (!test(ele))
            return false;
    });

    return true;
}

console.log(every([NaN, NaN, NaN], isNaN));
// ? true
console.log(every([NaN, NaN, 4], isNaN));
// ? true
Run Code Online (Sandbox Code Playgroud)

javascript callback

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

memcpy错误:分段错误(核心转储)

我正在尝试使用memcpy将一个字符串复制到另一个字符串中,代码如下:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>


typedef struct fullName
{
    char* firstName;
    char* lastName;
} NAME;

int main()
{              
    NAME myName, hisName;

    myName.firstName =  "aaaaaaa";
    hisName.firstName = "bbbbbb";

    memcpy(myName.firstName, hisName.firstName, sizeof(hisName.firstName));

    printf("myName.firstName = %s\n", myName.firstName);
    printf("hisName.firstName = %s\n", hisName.firstName);
}
Run Code Online (Sandbox Code Playgroud)

并且它给出了分段错误(核心转储)运行程序之后的错误我试图声明firstNamelastName作为指向char数组的指针而不是指向char的指针,但错误仍然存​​在.我错过了什么?!请帮忙......

仅供参考.我正在使用Ubuntu 14,我正在使用gcc(Ubuntu 4.8.2-19ubuntu1)......

c pointers memcpy

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

我如何将linq转换为lambda

如何将此LINQ查询转换为lambda?

var res = from c in db.Client
                          where db.TimesheetLine.Select(o => o.ClientId).Contains(c.Id)
                          select c;
Run Code Online (Sandbox Code Playgroud)

这个结果应该在下拉列表中,所以我开始这样:

ViewBag.ClientId = new SelectList(db.Client, "Id", "ClientName");
Run Code Online (Sandbox Code Playgroud)

任何帮助非常感谢.

c# linq lambda

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

返回其他代表的组合

我需要返回另外两个表达式的乘法表达式,但是这个例子给了我错误

public Func<double> EvaluateOne()
{
    return () => EvaluateTwo() * EvaluateTwo();
}

public Func<double> EvaluateTwo()
{
    return () => 2;
}
Run Code Online (Sandbox Code Playgroud)

在功能EvaluateOne 错误:can't applay operand * to operands of type Func<double> and Func<double>

c#

0
推荐指数
1
解决办法
52
查看次数

比较C#对象

考虑以下代码:

object str1 = "shahrooz";
object str2 = "shahrooz";
object int1 = 1;
object int2 = 1;

Console.WriteLine("str1 == str2 : " + (str1 == str2));
Console.WriteLine("int1 == int2 : " + (int1 == int2));
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)

运行此代码时,您将获得以下结果:

str1 == str2 : True
int1 == int2 : False
Run Code Online (Sandbox Code Playgroud)

两个比较都是对象,但为什么第一个比较返回true但第二个比较返回false?

c# string

0
推荐指数
1
解决办法
245
查看次数