私は EF Code First CTP4 を正常に動作させ、今日 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 = "dave@dave.com",
City = "San Francisco",
AccountStatus = "Active",
State = "CA",
FirstName = "David",
LastName = "Daverson",
Zip = "94118",
GeoLat = 37.735,
GeoLong = -122.392 },
new Member {
Email = "bob@bob.com",
City = "Oakland",
AccountStatus = "Active",
State = "CA",
FirstName = "Bob",
LastName = "Boberson",
Zip = "94601",
GeoLat = 37.781,
GeoLong = -122.216 },
new Member {
Email = "jenny@jenny.com",
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: 競合する変更が検出されました。これは、同じキーを持つ複数のエンティティを挿入しようとしたときに発生することがあります。
何が変わったのか、なぜこれが機能しなくなったのか、誰にも分かりませんか? これを機能させるには、何を変更する必要がありますか?