C# 正在将值作为null分配给数据库,而不是0

C# 正在将值作为null分配给数据库,而不是0,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我试图开发的代码上的奇怪行为。 我不明白这是否与DB/code/permissions有关。。或其他 实际情况是,在填写表单之后,一些应该为0的特定值将作为null传递给数据库。如果我直接在数据库上看到,它们被设置为null。其中一个字段是int,另一个是boolean。 对于这段代码,我将C与ASP.net和实体框架一起使用。数据库是Microsoft SQL 在这里找到问题有什么有用的方法? 我会错过什么 到目前为止,我已经尝试了以下方法: 将数据库上的设置从接受空值更改为不接受空值。当我试

我试图开发的代码上的奇怪行为。 我不明白这是否与DB/code/permissions有关。。或其他

实际情况是,在填写表单之后,一些应该为0的特定值将作为null传递给数据库。如果我直接在数据库上看到,它们被设置为null。其中一个字段是int,另一个是boolean。 对于这段代码,我将C与ASP.net和实体框架一起使用。数据库是Microsoft SQL

在这里找到问题有什么有用的方法? 我会错过什么

到目前为止,我已经尝试了以下方法:

将数据库上的设置从接受空值更改为不接受空值。当我试图保存这种类型的对象时,该对象不会被保存,因为有些字段被传递为null。如果我在对数据库执行操作之前与调试器确认,则它们将填充为0,而不是null。 试图更改用户身份验证的方式。没有变化。 使用以前的设置重建数据库。没有变化。 使用所有数据库连接重建解决方案。没有变化。 确认了存储和更新数据库的方法/过程,它们似乎是正确的。 此外,它们还适用于此对象中的其他字段

我在stackoverflow和web上搜索了一些解决方案,但到目前为止,什么都没用

我还可以检查什么来理解值以null形式到达数据库的原因

守则:

string path = Server.MapPath("~/prod/ficheiros/") + uplFicheiro.FileName;
uplFicheiro.SaveAs(path);
videos v = new videos();
v.id = 21;
v.video_name = VideoName.Text;
v.desc = DescVideo.Text;
v.aprov = true; <--- reaches DB as null
v.username = Page.User.Identity.Name;
v.url = "45";
v.num_visualizacoes = 0; <--- reaches DB as null

AcessoDados.DBVideos.insertVideo(v);
GridView1.DataBind();
CleanForm();
我发现了问题。在数据库上写入的方法不包括我认为为null的字段。因此,它们到达DB的原因是null。
我需要更正这个由实体模型生成的部分。有什么方法可以修改模型而不是手动编写方法吗?

-您需要转到colu的属性 -检查是否存在常规块->默认值和绑定 -确保将其设置为0
-如果为空,则需要通过defaulf NULL

查看代码,至少在您认为要将0传递到数据库的相关部分是有用的。如果没有你的代码,我们所能做的就是猜测,这一点都不是很有用。为什么你需要将它设置为0而不是NULL,你能给我们举个例子吗?通常NULL表示未知值,而0表示0本身。只是因为UI=>中没有提供该值,所以建议将其保存为NULL。发生的情况是,即使我将v.aprov赋值为true,它也会以NULL的形式到达数据库。如果为false,则在数据库中也将为null。是否确定列名匹配并且在模型和数据库之间正确映射?也许给我们看看你的模型吧?旁注:insertVideo中的错误处理非常糟糕。就让错误冒出来吧。不要将布尔返回值用于错误传播。
[DataObjectMethod(DataObjectMethodType.Insert, true)]
public static bool insertVideo(videos vid)
{
    bool res = false;
    try
    {

        contexto.Entry(vid).State = System.Data.Entity.EntityState.Added;
        res = (contexto.SaveChanges() != 0);

    }
    catch (Exception) { }

    return res;
}