"无法将null值分配给System.Int32类型的成员,该类型是不可为空的值类型."

use*_*040 3 c# linq wcf

我有一个WCF服务(服务).服务管理数据.但是现在我通过在LINQ查询中选择数据来解决问题.我收到一条消息"无法将null值分配给类型为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;
    }
Run Code Online (Sandbox Code Playgroud)

ID_ARTIEST是一个整数字段,它也是一个主键.该字段的值是必需的,并且无法使用NULL值.

这种方法一直有效.当我添加新服务时,问题就开始了.

我的问题是:我错了什么?有与服务有关吗?我必须推迟这个过程吗? 有人可以给我一些提示吗?我有8个服务参考.如果您遗漏了一些重要来源,我可以添加它.

我现在只有一个解决方法.我在try-catch区域添加了try-catch.然后我没有得到任何例外.它与性能有关.我需要异步解决方案吗?

谢谢.

tom*_*ern 5

几乎可以肯定发生了什么是类型的属性之一ARTIESTsDatabaseControl.GetDatabeheer.DataContext.ARTIESTs的类型是int?(这意味着空整数).

猜测我会说它是ID_CATEGORIE或者ID_GENRE.

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

这将解决您的问题.