Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# &引用;不能将空值分配给System.Int32类型的成员,该类型是不可为空的值类型。”;_C#_Wcf_Linq - Fatal编程技术网

C# &引用;不能将空值分配给System.Int32类型的成员,该类型是不可为空的值类型。”;

C# &引用;不能将空值分配给System.Int32类型的成员,该类型是不可为空的值类型。”;,c#,wcf,linq,C#,Wcf,Linq,我有一个WCF服务。服务管理数据。但现在我在LINQ查询中选择数据时遇到了问题。我收到一条消息“不能将空值分配给System.Int32类型的成员,该类型是不可为空的值类型。” 在我第一次遍历该方法时,通过调试,您将完成异常行。当我把调试器行(黄色标记的那一行)放回“//08”行,然后我遍历该方法时,一切都很顺利 private static ResultClass Geselecteerd(int AID_Artiest) // 01 { // 02 Resu

我有一个WCF服务。服务管理数据。但现在我在LINQ查询中选择数据时遇到了问题。我收到一条消息“不能将空值分配给System.Int32类型的成员,该类型是不可为空的值类型。”

在我第一次遍历该方法时,通过调试,您将完成异常行。当我把调试器行(黄色标记的那一行)放回“//08”行,然后我遍历该方法时,一切都很顺利

    private static ResultClass Geselecteerd(int AID_Artiest)  // 01
    { // 02
        ResultClass _Result = new ResultClass(); // 03
        string sMethodName = System.Reflection.MethodBase.GetCurrentMethod().Name;// 04
        // 05
        try // 06
        { // 07
            var recArtiest = (from artiest in DatabaseControl.GetDatabeheer.DataContext.ARTIESTs  // 08
                           where artiest.ID_ARTIEST == AID_Artiest
                           select artiest).SingleOrDefault();

            if (recArtiest != null)
            {
                ArtiestDataType.ID_Artiest = recArtiest.ID_ARTIEST;
                ArtiestDataType.Artiestnaam = recArtiest.ARTIESTNAAM;
                ArtiestDataType.Voorvoegsel = recArtiest.VOORVOEGSEL;
                ArtiestDataType.Product = recArtiest.PRODUCT;
                ArtiestDataType.ID_Categorie = recArtiest.ID_CATEGORIE;
                ArtiestDataType.ID_Genre = recArtiest.ID_GENRE;
                ArtiestDataType.Is_Band = BasisDataType.GetBoolString(recArtiest.IS_BAND);
                ArtiestDataType.Land = recArtiest.LAND;
                ArtiestDataType.Plaats = recArtiest.PLAATS;
                ArtiestDataType.Website = recArtiest.WEBSITE;
                ArtiestDataType.DatumInvoer = recArtiest.DATUM_INVOER;
                ArtiestDataType.DatumMutatie = recArtiest.DATUM_MUTATIE;
            }
        }
        catch (Exception ex)
        {
            string sFoutmelding = "Kan geen selectie maken.";
            FLogboek.AddFoutmelding(FClassName, sMethodName, sFoutmelding, ex.Message);

            _Result.Code = ResultCode.FATAAL;
            _Result.Melding = sFoutmelding;
        }

        return _Result;
    }
ID\u ARTIEST是一个整数字段,也是主键。该字段的值是必需的,不能为空值。

这种方法一直行之有效。当我添加新服务时,问题开始出现。

我的问题是:我做错了什么?和服务有什么关系我必须推迟流程吗? 有人能给我一些提示吗?我有8份服务推荐信。如果你缺少一些重要的信息来源,我可以补充

我现在只有一份工作要做。 我已经在try catch区域内添加了try catch。然后我没有得到任何例外。这与性能有关我需要异步解决方案吗?

谢谢

我错了什么

除了将null赋值给不可为null的元素(结构)之外

你的代码是没有意义的(发布一吨不如实际发布相关部分,你错过了)

我可能认为数据库中的字段可以为null并且包含null,但是您的字段不是int?(int的null值)因此它不能在那里赋值null

我会朝着数据库映射表出错的方向看。检查字段,检查类中所有可为空的列是否都可以为空。

更改

where artiest.ID_ARTIEST == AID_Artiest


您的一个或多个美工人员没有设置
ID\u ARTIEST
(您应该修复它,它看起来确实像一个应该始终存在的主键),因此在比较
(int?)null==int
时会引发异常。

将变量/属性声明为可为null的int

public int? myInt

几乎可以肯定的是,
DatabaseControl.GetDatabeheer.DataContext.ARTIESTs
中类型
ARTIESTs
的属性之一是
int?
(这意味着可以为空的整数)

我猜是
ID\u category
ID\u GENRE

您需要将类型
ArtiestDataType
的等效属性修改为类型
int?


这将解决您的问题。

我也有同样的问题,在表设计中有一个忽略重复列

在提交时插入时,插入后将返回表行。但在这里,由于重复,该行被忽略,它没有返回具有标识值(不可为null)的表行

因此,预期值不存在,它将抛出“不可为空的例外”


在插入之前,根据忽略重复列检查行是否存在。它将解决这个问题

在我的例子中,ID是一个INT64,修复它的方法是使用ToString()


ArtiestDataType对象的类的代码是什么?ArtiestDataType是唯一具有整数、字符串和日期时间的静态类。这不是问题所在。和话题无关,但仍然很重要;您应该签出,特别是ID_ARTIEST是主键。ID是一个整数,有一个
int?一些ID位于某处,另一个ID位于某处。您无法将可为空的(
int?
)分配给不可为空的(
int
),此时您将获得此异常。再次点击断点,查看哪个ID列可以为null并且包含null值。我忘了在表中添加了int字段。所有在我的表格中带有“ID_”的内容都是必需的。我尝试了所有答案。谢谢!对于Entity Framework/MVC 5来说,这是我看到的关于这个错误的第一个答案,其中包括使用“?”表示可空。。。正是我需要的+先生,祝你好运!
public int? myInt
..... 
group t2 by t1 into gr
select new {t1 = gr.Key, id = gr.First().ID.ToString()}