EF中 向没有自动增加列的表添加数据 Entity Framework 数据生成选项DatabaseGenerated

本文介绍了Entity Framework (EF) 中DatabaseGenerated属性的使用方法及其三种枚举值:Identity、None和Computed。通过示例展示了如何为不同类型的主键字段设置自增长属性。
在EF中,我们建立数据模型的时候,可以给属性配置数据生成选项DatabaseGenerated,它后有三个枚举值:Identity、None和Computed。

Identity:自增长

None:不处理

Computed:表示这一列是计算列。

在EF中,如果主键是int类型,Code First生成数据库的时候会自动设置该列为自增长。但如果主键是Guid类型,我们就要手动的去设置了。


    [Table("User_Detail")]
    [Serializable]
    public class UserDetail
    {
        [Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
        [Column("UserID")]
        public int UserID { get; set; }

        public string RealName { get; set; }

        public string IDNumber { get; set; }

    }


这个就可以正常添加数据了。


using Npgsql; using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Data.Entity; [Table("test_02", Schema = "public")] public class Test02 { [Key] // 明确主键 [Required] // 强制非空 [Column("id")] public int Id { get; set; } [Column("name")] [MaxLength(255)] // 限制文本长度(可选) public string Name { get; set; } } [DbConfigurationType(typeof(NpgsqlDbConfiguration))] public class PgDbContext : DbContext { public DbSet<Test02> Test02 { get; set; } public PgDbContext() : base("name=PgDbContext") { Database.SetInitializer<PgDbContext>(null); } } public class NpgsqlDbConfiguration : DbConfiguration { public NpgsqlDbConfiguration() { SetProviderServices("Npgsql", NpgsqlServices.Instance); SetProviderFactory("Npgsql", NpgsqlFactory.Instance); } } class Program { static void Main(string[] args) { using (var context = new PgDbContext()) { var entity = new Test02 { Id = 2000, Name = "TEST_EF6" }; context.Test02.Add(entity); context.SaveChanges(); Console.WriteLine($"插入数据ID:{entity.Id}"); } } }在PG12 数据库有test_02,建语句是CREATE TABLE test_02 ( id INT PRIMARY KEY, name TEXT ); 在 EntityFramework(6.5.0) 下通过 EntityFramework6.Npgsql(6.4.3) 连接 PG12 数据库,并向 test_02 里插入一条id 是 2000,name 是‘TEST_EF6’ 的数据。 执行这段程序,报错异常: Npgsql.PostgresException (0x80004005): 23502: null value in column "id" violates not-null constraint 如何修复
最新发布
05-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值