使用Entity Framework避免使用null或空值保存在数据库中

时间:2013-08-29 10:49:53

标签: asp.net-mvc entity-framework null asp.net-ajax save

我有一个应用程序,我们正在使用实体框架,点击按钮时会调用ajax来保存值 一切都运行正常,但即使我们尝试单击保存按钮,没有值,它也会在数据库中保存为null或空(占用空间)。
我忽略了一些小错误,请帮帮我 我尝试了什么:

$.ajax({
            type: "POST",
            url: '~/SaveGroups',
            data: {
            GroupId: (GroupId == null ? -1 : GroupId),
            counterId: (counterId == null ? -1 : counterId),
            GroupCode: GroupCode,
            GroupDesc: GroupDescription
        },
            success: function (result) {
                if (result != null) {
                    $("#PartialGroupsTable").html(result.GroupsPageString);
                    $("#GCode").val('')             //GCode is the name of the textbox
                    $("#GDescription").val('');     //GDescription is the other textbox
                    GroupId = -1;
        }

        },
            complete: function () {
                $("#GCode").empty();
                $("#GDescription").empty();
        },
            error: function () {
                alert("Details Not Saved. Please try again later");
        }

        });

提前完成。

2 个答案:

答案 0 :(得分:1)

您有多个选项可以满足您的要求,其中两个是Client Side validation and server side validations,这意味着您需要在将数据发送到数据库之前验证数据以进行保存..例如

你有正确的模型类..代表你的表

public class User
{
[Required]
public string UserName{get; set;}
...
...
} 

假设您尝试向控制器或dbcontext发送空值,它将不允许您向其中插入空值,因为它只允许非空值。

你也可以使用jquery

来做到这一点
function buttonClick()
{
if($('#txtName').val()=='')
{
alert('Please enter name');
return false;
}
else
{
//make ajax call here
}
}
像这样,你可以通过多种方式实现它,你也可以使用不引人注目的javascript。希望这有帮助

答案 1 :(得分:1)

如果您期望为GroupId或counterId获得-1而不是获得其他内容,原因可能是现有值不为null但可能是空字符串。检查它以及检查null / undefined。如果这不是问题,则可能需要其他信息。

例如:

GroupId: ((GroupId == null || GroupId == '') ? -1 : GroupId),