EF4CodeFirstCTP5:Seed方法不再有效现在,当我重新填充数据库时出现异常。这是我的模型:publicclassMember{publicMember(){DateCreated=DateTime.Now;DateUpdated=DateTime.Now;DateLastLogin=DateTime.Now;}[Key,DatabaseGenerated(DatabaseGenerationOption.Identity)]\我尝试删除这些注释,结果是相同的publicintMemberId{get;放;}[Required,RegularExpression(".+\@.+\..+",ErrorMessage="Pleaseenteravalidemailaddress")]publicstringEmail{get;放;}[Required,StringLength(20,MinimumLength=2)]publicstringFirstName{get;放;}[Required,StringLength(20,MinimumLength=2)]publicstringLastName{get;放;}[Required,StringLength(36,MinimumLength=2)]publicstringCity{get;放;}[Required,StringLength(20,MinimumLength=2)]publicstringState{get;放;}[Required,StringLength(20,MinimumLength=2)]publicstringZip{get;放;}publicdoubleGeoLat{get;放;}publicdoubleGeoLong{get;放;}publicstringAccountStatus{get;放;}民众日期时间DateCreated{get;私有集;}publicDateTimeDateUpdated{get;放;}publicDateTimeDateLastLogin{get;放;}publicvirtualPublicProfile配置文件{get;放;}}这是在Global.asax.cs中调用的代码protectedvoidApplication_Start(){RegisterRoutes(RouteTable.Routes);DbDatabase.DefaultConnectionFactory=newSqlConnectionFactory("System.Data.SqlClient");DbDatabase.SetInitializer(newInitializer());}publicclassInitializer:DropCreateDatabaseAlways{protectedoverridevoidSeed(MeetPplDBcontext){varMembers=newList{newMember{Email="dave@dave.com",City="SanFrancisco",AccountStatus="Active",State="CA",FirstName="David",LastName="Daverson",Zip="94118",GeoLat=37.735,GeoLong=-122.392},newMember{Email="bob@bob.com",City="Oakland",AccountStatus="Active",State="CA",FirstName="Bob",LastName="Boberson",Zip="94601",GeoLat=37.781,GeoLong=-122.216},newMember{Email="jenny@jenny.com",City="SanFrancisco",AccountStatus="Active",State="CA",FirstName="Jenny",LastName="Jennerson",Zip="94123",GeoLat=37.735,GeoLong=-122.392}};Members.ForEach(m=>context.Members.Add(m));context.SaveChanges();}}当它在上下文中遇到SaveChanges时,我得到以下异常:Conflicttingchangesdetected这可能发生当尝试插入具有相同键的多个实体时。说明:在执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其在代码中的来源的更多信息。异常详细信息:系统.Data.UpdateException:检测到冲突更改。当尝试使用相同的键插入多个实体时可能会发生这种情况。有谁知道发生了什么变化以及为什么这不再起作用?需要更改什么才能使它起作用?也许是因为您正在使用由EF生成的变量名称进行复数化。而不是:publicclassInitializer:DropCreateDatabaseAlways{protectedoverridevoidSeed(MeetPplDBcontext){varMembers=newList{newMember{Email="dave@dave.com",City="SanFrancisco",.....试试这个公共类初始化器:DropCreateDatabaseAlways{protectedoverridevoidSeed(MeetPplDBcontext){var_members=newList{newMember{Email="dave@dave.com",City="SanFrancisco",...._members.ForEach(m=>context.Members.Add(m));context.SaveChanges();我将你的代码与ScottGu的http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework-4.aspx进行了对比你的异常原因是您正在将数据类型int与DatabaseGenerationOption.Identity一起使用。使用身份将生成guid而不是int键。我有一个类似的问题,因为我想要一个带有Guid作为唯一rowid的int类型的键。如果我在一个实体上使用种子,即使它们位于不同的道具中,种子也会停止工作。以上就是C#学习教程的全部内容:EF4CodeFirstCTP5:种子方法不再有效分享。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
