, 나는이 오류 메시지가 얻을 FOREIGN KEY 제약 조건과 충돌 :EF 코드 첫 번째 INSERT 문 제가 데이터베이스에 레코드를 삽입하려고하면
INSERT 문 외래 키 제약 "FK_dbo와 충돌을 .Order_dbo.AspNetUsers_UserId ". 충돌이 데이터베이스 "Test", 테이블 "dbo.AspNetUsers", 열 'Id'에서 발생했습니다. 문이 종료되었습니다.
면책 조항 :이 질문은 (here, here 및 here) 전에 요청을받은 것을 알고 있지만 답변을 아무도 제가 얻을이 오류를 수정 도움이되지 않습니다. 새로운 Order
삽입
[Table("Order")]
public class Order
{
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity), Key]
public int Id { get; set; }
[Required]
public string UserId { get; set; }
public virtual List<OrderDetails> OrderDetails { get; set; }
[ForeignKey("UserId")]
public virtual ApplicationUser User { get; set; }
}
[Table("OrderDetails")]
public class OrderDetails
{
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity), Key]
public int Id { get; set; }
[Required]
public int OrderId { get; set; }
[ForeignKey("OrderId")]
public virtual Order Order { get; set; }
}
public class ApplicationUser : IdentityUser
{
[MaxLength(15)]
public string FirstName { get; set; }
[MaxLength(15)]
public string LastName { get; set; }
[MaxLength(50)]
public string EmailAddress { get; set; }
public virtual List<Order> Orders { get; set; }
}
코드 : 여기
는 모델입니다 내가 볼 수있는 디버깅 할 때 _dbContext.SaveChanges(); // this is where the error msg is being thrown.
: 오류는이 라인에서 발생되는
public OrderDetails Add(dynamic addOrderDetails, string userId)
{
if (addOrderDetails.OrderId == null)
{
var order = new Order()
{
UserId = userId,
CreateDate = DateTime.Now,
Status = OStatus.InProgress,
Confirmed = (DateTime?)null,
};
var newOrder = _dbContext.Orders.Add(order);
_dbContext.Entry(order).State = EntityState.Added;
_dbContext.SaveChanges(); // this is where the error msg is being thrown.
var orderDetails = new OrderDetails()
{
OrderId = newOrder.Id,
ServiceId = addOrderDetails.ServiceId,
EventStart = start,
EventEnd = end
};
var newOrderDetails = _dbContext.OrderDetails.Add(orderDetails);
_dbContext.Entry(orderDetails).State = EntityState.Added;
_dbContext.SaveChanges();
}
return null;
}
그 UserId = userId,
값이 있습니다.
그럼 왜이 오류 메시지가 표시됩니까?
저는 항상 DB를 먼저 다뤘지만 새 주문에서 UserID를 충족시키는 ApplicationUsers에서 아무 것도 찾을 수없는 것처럼 보입니다. 처음에는 사용자가 ApplicationUsers 테이블에 없지만 해당 테이블에 대한 엔티티를 보면 UserID가있는 위치가 보이지 않습니다. –
'MembershipProvider'를 대체하는'IdentityUser'와'SimpleMembershipProvider'는 기본적으로 UserId와 더 많은 필드를 포함합니다. 'asp.net-identity' 태그가 게시물에 추가되었습니다. – Quoter