为了账号安全,请及时绑定邮箱和手机立即绑定

尝试使用 NPoco 在数据库中插入值时出错

尝试使用 NPoco 在数据库中插入值时出错

C#
波斯汪 2023-09-24 15:41:47
我正在使用Umbraco 文档中的这个示例,当我尝试将值保存到数据库表时,我收到此错误:无法将 NULL 值插入列“Id”、表“petapoco.dbo.BlogComments” ;列不允许为空。插入失败。该语句已终止。另外,在创建表并在数据库中检查它后,我可以看到 id 字段未设置主键和自动增量选项。这就是我插入值的方式:public class Class1 : IUserComposer{    public void Compose(Composition composition)    {       composition.Components().Append<SubscribeToContentServiceSavingComponent>();    }    public class SubscribeToContentServiceSavingComponent : IComponent    {        public void Initialize()        {            MemberService.Saved += MemberService_Saving;        }        public void Terminate()        {        }        private void MemberService_Saving(IMemberService sender, SaveEventArgs<IMember> e)        {            foreach (IMember member in e.SavedEntities)            {                var blogPostToAdd = new BlogCommentSchema();                blogPostToAdd.BlogPostUmbracoId = member.Id;                blogPostToAdd.Name = member.Name;                blogPostToAdd.Email = member.Name;                blogPostToAdd.Website = member.Name;                blogPostToAdd.Message = member.Name;                using (var scope = Current.ScopeProvider.CreateScope(autoComplete:true))                {                    var database = scope.Database;                    // use database                      scope.Database.Insert<BlogCommentSchema>(blogPostToAdd);                    scope.Complete();                }            }        }    }}
查看完整描述

1 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

Umbraco 论坛上的好人解决了我的问题。这是我的课堂上缺失的部分:


[PrimaryKeyColumn(AutoIncrement = true, IdentitySeed = 1)]

所以我的课程最终应该是这样的:


[TableName("BlogComments")]

    [PrimaryKey("Id", AutoIncrement = true)]

    [ExplicitColumns]

    public class BlogCommentSchema

    {

        [PrimaryKeyColumn(AutoIncrement = true, IdentitySeed = 1)]

        [Column("Id")]

        public int Id { get; set; }


        [Column("BlogPostUmbracoId")]

        public int BlogPostUmbracoId { get; set; }


        [Column("Name")]

        public string Name { get; set; }


        [Column("Email")]

        public string Email { get; set; }


        [Column("Website")]

        public string Website { get; set; }


        [Column("Message")]

        [SpecialDbType(SpecialDbTypes.NTEXT)]

        public string Message { get; set; }

    }

}


查看完整回答
反对 回复 2023-09-24
  • 1 回答
  • 0 关注
  • 97 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信