0

好的,这是我解释我的问题的最佳方法。

使用实体框架,通过我的数据上下文的一个实例,我使用 LINQ 在我的模型中获取一个名为“Marketing”的实体的实例。该实体与其他实体有关系,如下图所示。请注意,与“HospitalistSurvey”的扩展关系有一个错误。后来,我尝试设置一个属性的值(即,marketing.HospitalistSurvey.[HospitalistSurveyProperty]),当时我收到一条错误消息,提示“无法将空值分配给 System.Int32 类型的成员,该成员不可为空值类型。”

调试器代码

我应该怎么做才能开始调查这个问题?

4

1 回答 1

1

我认为您在这里遇到的是以下情况:

实体模型

public class MyEntity
{
    [Key]
    public int Id { get; set; }

    public int Value { get; set; } // note that this is non nullable
}

数据库模型

CREATE TABLE [dbo].[MyEntities](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [Value] [int] NULL,
)

EF 将处理此设置,直到MyEntities出现行,Value IS NULL在这种情况下,它会抛出您所看到的异常,因为它试图将空值放入不可为空的类型中。

一种解决方案是更改模型:

public class MyEntity
{
    [Key]
    public int Id { get; set; }

    public int? Value { get; set; } // this is now nullable
}

另一种是更改数据库:

CREATE TABLE [dbo].[MyEntities](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [Value] [int] NOT NULL,
)
于 2013-04-17T14:19:28.637 回答