当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > Entity Framework的默认值BUG解决方法

ASP.NET
blog程序新版本V2.0 Beta完成,提供V1.0全部源码下载
“/”应用程序中的服务器错误
asp.net(c#)复数类(复数加减乘除四则运算)
asp.net(c#)不可访问,因为它受保护级别限制
asp.net(c#) 水仙花数
ASP.NET实现用图片进度条显示投票结果
asp.net(c#) MS AJAX的安装
asp.net(c#)有关 Session 操作的几个误区
ASP.net基础知识之常见错误分析
[.net] 操纵自如-页面内的配合与通信
c# static的全部用法收集整理
使CheckBoxList的Attributes属性生效(修改微软的一个bug)
在ASP.NET中使用Session常见问题集锦
[原创]完美解决Could not load file or assembly ''AjaxPro.2'' or one of its dependencies. 拒绝访问。
在Apache环境下成功的运行ASP.NET的注意事项
ClickOnce DIY全自动更新下载升级的自我实现
asp.net jscript 一句话木马
在ASP.Net中实现flv视频转换的代码
将DataTable中的一行复制到另一个DataTable的方法
在DataTable中执行Select("条件")后,返回DataTable的方法

ASP.NET 中的 Entity Framework的默认值BUG解决方法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 151 ::
收藏到网摘: n/a

前几天常使用.Net 3.5里的Entity Framework做个网站的时候,发现了一个问题:添加记录时,对于DateTime型的数据,无法使用数据库的默认值。

虽然不是什么严重的问题,但牛脾气上来了 ,就行解决这个问题。

具体的情况是这样的,我的数据库有个Users表,三个字段,id,username,createtime。

id是int型,自增长,主键

username是nvchar(10)型,不允许为空

createtime是DateTime型字段,不允许为空,默认值 是getdate()

如果用Entity框架生成实体类,直接添加数据,不指定createtime,那就会在SaveChanges时出错:


            using (LinqDemoEntities lde = new LinqDemoEntities())
            {
                Users user = new Users
                {
                    name = "Admin"
                };
                lde.AddToUsers(user);
                lde.SaveChanges();
            }


最后在别人的指点下,才知道这是EF的一个Bug,需要将edmx文件里,createtime字段加上 StoreGeneratedPattern="Identity" 属性才行。

这样就能使用数据库默认值了。