저는 녹색 asp.net 개발자이고 프로젝트에 최신 엔티티 프레임 워크를 사용하고 있습니다. 자동 생성 된 값으로 데이터베이스를 시드하는 데 문제가 있습니다 (필자 생각). 다음은 정확한 오류입니다.INSERT 문이 FOREGIGN KEY 제약 조건과 충돌했습니다.
여기에 코드입니다 :
public class Address
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int AddressId { get; set; }
// some more properties
}
public class ApplicationUser : IdentityUser
{
[ForeignKey("Address")]
public int AddressId { get; set; }
public Address Address { get; set; }
// some more properties
}
public class Shelter
{
[Required]
[ForeignKey("Address")]
public int AddressId { get; set; }
public Address Address { get; set; }
// some more properties
}
//seed
private void CreateShelters()
{
EntityEntry<Address> MspcaAddress = DbContext.Addresses.Add(new Address()
{
Street = "350 S Huntington Ave",
City = "Jamaica Plain",
State = "MA",
AreaCode = "02130",
Latitude = 42.3228928,
Longititude = -71.11120540000002
});
EntityEntry<Address> BostonAnimalCareAndControlAddress = DbContext.Addresses.Add(new Address()
{
Street = "26 Mahler Rd",
City = "Roslindale",
State = "MA",
AreaCode = "02131",
Latitude = 42.2943377,
Longititude = -71.12153390000003
});
EntityEntry<Address> AnimalRescueLeagueOfBostonAddress = DbContext.Addresses.Add(new Address()
{
Street = "10 Chandler St",
City = "Boston",
State = "MA",
AreaCode = "0S2116",
Latitude = 42.3470486,
Longititude = -71.06976929999996
});
EntityEntry<Shelter> Mspca = DbContext.Shelters.Add(new Shelter()
{
Name = "MCSPA",
AddressId = MspcaAddress.Entity.AddressId
});
EntityEntry<Shelter> BostonAnimalCareAndControl = DbContext.Shelters.Add(new Shelter()
{
Name = "Boston Animal Care And Control",
AddressId = BostonAnimalCareAndControlAddress.Entity.AddressId
});
EntityEntry<Shelter> AnimalRescueLeagueOfBoston = DbContext.Shelters.Add(new Shelter()
{
Name = "Animal Rescue League Of Boston Address",
AddressId = AnimalRescueLeagueOfBostonAddress.Entity.AddressId
});
DbContext.SaveChanges();
}
내가 일치하지 않는 데이터/테이블에 문제가 있다면 확인하기 위해 데이터베이스를 다시 시도하지만, 난 여전히 오류를 얻고있다. 어떤 아이디어?
현상금을 얹어도 문제가 해결되지 않습니다. * 여전히 오류가 발생합니다 ... *와 같은 의견을 따르지 않으려면 [mcve]를 제공해야합니다. *. 예외 메시지는 제공된 코드에 문제가 있음을 분명하게 나타 내기 때문에 (대부분 동일한 문제가 있지만) 'ApplicationUser'를 삽입하는 코드에서 발생합니다. –
당신이 제공 한 코드는 데이터베이스에'ApplicationUser'를 새로 추가하지 않습니다. 오류는'ApplicationUser'에 대해 외래 키가 위반되었다고 말합니다. 동일한 코드를 디버깅하고 공유하고 있습니까? 게시 된 코드를 다시 살펴보고 동일한 코드가 아닌 경우 올바른 코드를 게시하십시오. –