首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >整数字段的注释- EF 4,MVC 4?

整数字段的注释- EF 4,MVC 4?
EN

Stack Overflow用户
提问于 2017-08-10 12:24:16
回答 1查看 153关注 0票数 0

我有一张桌子:

代码语言:javascript
复制
[Table("MyTable", Schema = "MySchema")]
public class MyTable
{
    [Key, Column(Order = 0)]
    [Required(AllowEmptyStrings = false
    public string LanguageID { get; set; }

    [Key, Column(Order = 1)]
    [Required(AllowEmptyStrings = false
    public byte YearID { get; set; }

    [Key, Column(Order = 2)]
    [Required(AllowEmptyStrings = false)]
    public byte SIMSCodeID { get; set; }

    [Required(AllowEmptyStrings = true)]
    public string Data { get; set; }

    [Required(AllowEmptyStrings = true)]
    public int UserID { get; set; }

    [Required(AllowEmptyStrings = true)]
    public int brformula { get; set; }
}

如您所见,最后两个字段是整数。在尝试用AJAX访问这个表中的一行时,应该对这些注释进行什么,这样我就不会得到这个错误:

消息:

代码语言:javascript
复制
The 'brformula' property on 'MyTable' could not be set to a 'null' value. You must set this property to a non-null value of type 'Int32'. 

例外类型:

代码语言:javascript
复制
System.Data.ConstraintException

发生错误的代码行:

代码语言:javascript
复制
MyTable myTable= db.MyTableDbSet.Find(langid, year, simscodeid);

Api控制器方法:

代码语言:javascript
复制
[HttpGet]
public HttpResponseMessage GetSIMSData(string langid, byte year, byte simscodeid)
{
    try
    {
        MyTable myTable = db.MyTableDbSet.Find(langid, year, simscodeid);

        if (MyTable == null)
        {
            return Request.CreateResponse(HttpStatusCode.OK, this.getSimsDataObject(false, myTable));
        }
        else
        {
            return Request.CreateResponse(HttpStatusCode.OK, this.getSimsDataObject(true, myTable));
        }
    }
    catch (Exception e)
    {
        return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e);
    }
}

我的AJAX调用:

代码语言:javascript
复制
    getSIMSDataByAllParams: function (langId, year, simscodeid) {
        jq.ajax({
            contentType: 'application/json; charset=utf-8',
            type: "GET",
            url: "/api/MyTable",

            data: {
                langid: langId,
                year: year,
                simscodeid: simscodeid,
                brformula: 0
            },

            dataType: "json",

            beforeSend: function (jqXHR, settings) {
                simsDataView.resetStatusAndErrorTf();
                simsDataView.setStatusMsg(simsDataView.getMessageByLang(langId, 'fetchingTreeNodeDataMsg'), constants.TEXT_COLOR_BLUE);
            },

            success: function (data, textStatus, jqXHR) {
                simsDataByAllParams = {};
                simsDataByAllParams = JSON.parse(data);
            },

            complete: function (jqXHR, textStatus) {
                if (simsDataByAllParams.hasData) {
                    tinymce.activeEditor.setContent(simsDataByAllParams.simsDataObject.Data);
                } else {
                    tinymce.activeEditor.setContent(simsDataView.getMessageByLang(langId, 'addEditorContentMsg'));
                }

                dbDirty = false;
                simsDataView.setStatusMsg(simsDataView.getMessageByLang(langId, 'treeNodeDataFetchedMsg'), constants.TEXT_COLOR_GREEN);
            },

            error: function (jqXHR, textStatus, errorThrown) {
                errorsMsgTxt.append(simsUtility.printAjaxError(langId, jqXHR, textStatus, errorThrown));
            }
        });
    },

注意:目前,DB中的字段允许空,但我希望它是默认值0。为什么它不抱怨UserID呢?它也是整数,允许为空。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-10 12:58:44

根据我的经验,我可以用1种或2种方法。

在数据库中设置默认值,或在构造函数中设置默认值。

数据库中的

如果您正在使用SQL Server (这就是我所使用的,但我无法理解为什么在其他DBMS中不能使用此功能),您可以单击表设计中的列。对于brformula及其更低的版本,有一个名为“默认值或绑定”的行,您可以将其设置为0。

构造函数中的

代码语言:javascript
复制
public class MyTable
{
    [Key, Column(Order = 0)]
    [Required(AllowEmptyStrings = false
    public string LanguageID { get; set; }

    [Key, Column(Order = 1)]
    [Required(AllowEmptyStrings = false
    public byte YearID { get; set; }

    [Key, Column(Order = 2)]
    [Required(AllowEmptyStrings = false)]
    public byte SIMSCodeID { get; set; }

    [Required(AllowEmptyStrings = true)]
    public string Data { get; set; }

    [Required(AllowEmptyStrings = true)]
    public int UserID { get; set; }

    [Required(AllowEmptyStrings = true)]
    public int brformula { get; set; }

    public MyTable()
    {
        brformula = 0;
    }
}

我希望这能帮到你。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45613675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档