ef设置非自增长id_Entity Framework 插入数据 解决主键非自增问题

本文介绍了在使用Entity Framework时遇到的关于非自增主键的问题及其解决方案。当尝试插入数据时,Entity Framework默认假设ID属性为自增标识列,导致插入错误。为解决这个问题,可以通过在`OnModelCreating`方法中配置`HasDatabaseGeneratedOption(DatabaseGeneratedOption.None)`,或者在实体类属性上添加`[DatabaseGenerated(DatabaseGeneratedOption.None)]`标记,以指示ID属性不是自增的。同时,文章还提及了Entity Framework对枚举类型支持的不足,提出了一些缓解策略。
摘要由CSDN通过智能技术生成

http://blog.csdn.net/educast/article/details/8632806

与Entity Framework相伴的日子痛并快乐着。今天和大家分享一下一个快乐,两个痛苦。

先说快乐的吧。Entity Framework在将数据插入数据库时,如果主键字段是自增标识列,会将该自增值返回给实体对象对应的属性。

比如下面添加博客随笔至数据库的示例代码:

var blogPost = new BlogPost()

{

Author = "博客园",

Title = "程序员的网上家园"

};

using (BlogDbContext context = new BlogDbContext())

{

context.BlogPosts.Add(blogPost);

context.SaveChanges();

return blogPost.ID;

}

SaveChanges()之后,blogPost.ID的值就是数据库中对应自增标识列的值。

看一下Entity Framework生成的SQL语句:

exec sp_executesql N'insert [dbo].[blog_Content]([Title],[Author])

values (@0, @1)

select [ID]

from [dbo].[blog_Content]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值