我有EF代码优先CTP4工作正常,我今天安装了CTP5。现在,当我的数据库重新填充时,我收到了一个异常。EF4代码第一CTP5:种子方法不再有效
这里是我的模型:
public class Member
{
public Member()
{
DateCreated = DateTime.Now;
DateUpdated = DateTime.Now;
DateLastLogin = DateTime.Now;
}
[Key, DatabaseGenerated(DatabaseGenerationOption.Identity)] \\I have tried removing these annotations and the result is the same
public int MemberId { get; set; }
[Required,RegularExpression(".+\\@.+\\..+", ErrorMessage = "Please enter a valid email address")]
public string Email { get; set; }
[Required,StringLength(20,MinimumLength=2)]
public string FirstName { get; set; }
[Required, StringLength(20, MinimumLength = 2)]
public string LastName { get; set; }
[Required, StringLength(36, MinimumLength = 2)]
public string City { get; set; }
[Required, StringLength(20, MinimumLength = 2)]
public string State { get; set; }
[Required, StringLength(20, MinimumLength = 2)]
public string Zip { get; set; }
public double GeoLat { get; set; }
public double GeoLong { get; set; }
public string AccountStatus { get; set; }
public DateTime DateCreated { get; private set; }
public DateTime DateUpdated { get; set; }
public DateTime DateLastLogin { get; set; }
public virtual PublicProfile Profile { get; set; }
}
这里是被称为在Global.asax.cs中
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
DbDatabase.DefaultConnectionFactory = new SqlConnectionFactory("System.Data.SqlClient");
DbDatabase.SetInitializer<MeetPplDB>(new Initializer());
}
public class Initializer : DropCreateDatabaseAlways<MeetPplDB>
{
protected override void Seed(MeetPplDB context)
{
var Members = new List<Member>
{
new Member {
Email = "[email protected]",
City = "San Francisco",
AccountStatus = "Active",
State = "CA",
FirstName = "David",
LastName = "Daverson",
Zip = "94118",
GeoLat = 37.735,
GeoLong = -122.392 },
new Member {
Email = "[email protected]",
City = "Oakland",
AccountStatus = "Active",
State = "CA",
FirstName = "Bob",
LastName = "Boberson",
Zip = "94601",
GeoLat = 37.781,
GeoLong = -122.216 },
new Member {
Email = "[email protected]",
City = "San Francisco",
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的代码,我得到这个例外:
检测到冲突的变化。尝试插入具有相同密钥的多个实体时可能会发生这种情况。
描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关该错误的更多信息以及源代码的位置。
异常详细信息:System.Data.UpdateException:检测到冲突的更改。尝试插入具有相同密钥的多个实体时可能会发生这种情况。
有没有人知道什么改变了,为什么这不起作用?需要改变这个工作?
我什么都看不到你的代码错误或复制问题代码。对不起,祝你好运。 – Paul 2010-12-11 00:08:08
我在关注[本系列](http://blogs.msdn.com/b/adonet/archive/2011/01/27/using-dbcontext-in-ef-feature-ctp5-part-1-introduction- and-model.aspx),并且我的初始化程序没有任何'SaveChanges'调用,但仍然正确地填充数据库。也许CTP4和CTP5之间的变化是为初始化器保存更改的位置? – ProfK 2011-02-20 08:25:42