와 역 특성을 해결할 수 :엔티티 프레임 워크 핵심은 심지어 내가 아주 최소한의 사용 사례에이 내려 삶은 한 주석
public class ItemRental
{
[Key]
public Int32 ItemRentalId { get; set; }
public Int32? OriginatingSalesOrderId { get; set; }
[ForeignKey("OriginatingSalesOrderId")]
public SalesOrder OriginatingSalesOrder { get; set; }
public Int32? DepositCreditedOnSalesOrderId { get; set; }
[ForeignKey("DepositCreditedOnSalesOrderId")]
public SalesOrder DepositCreditedOnSalesOrder { get; set; }
}
public class SalesOrder
{
[Key]
public Int32 SalesOrderId { get; set; }
[InverseProperty("OriginatingSalesOrder")]
public ICollection<ItemRental> Rentals { get; set; }
[InverseProperty("DepositCreditedOnSalesOrder")]
public ICollection<ItemRental> Refunds { get; set; }
}
public class MyAppDatabase : DbContext
{
public MyAppDatabase(DbContextOptions<MyAppDatabase> options) : base(options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
foreach (var relationship in modelBuilder.Model.GetEntityTypes().SelectMany(x => x.GetForeignKeys()))
{
relationship.DeleteBehavior = DeleteBehavior.Restrict;
}
base.OnModelCreating(modelBuilder);
}
public DbSet<ItemRental> ItemRentals { get; set; }
public DbSet<SalesOrder> SalesOrders { get; set; }
}
는 줄 것이다 마이그레이션을 실행하려고 :
시스템. InvalidOperationException : 'SalesOrder'유형의 탐색 속성 'ItemRental.OriginatingSalesOrder'가 나타내는 관계를 확인할 수 없습니다. 수동으로 관계를 구성하거나 '[NotMapped]'속성을 사용하거나 'OnModelCreating'에서 'EntityTypeBuilder.Ignore'를 사용하여이 속성을 무시하십시오.
이 관계는 EF 6.x에서 완벽하게 적용됩니다. Fluent API를 사용하여이 문제를 해결할 수 있다고 확신하지만 주석을 사용하여이 작업을 수행하는 방법을 이해하고 있습니다.
여기에서 비슷한 질문을 발견했습니다. EntityFramework core model relationship issue while doing Add-Migration 그러나이 문제는 해결되지 않습니다.
편집 : 여기 샘플 솔루션 : https://drive.google.com/file/d/0BzgvtZfXt8MHd1RseVJubmd6TEU/view?usp=sharing 데이터 주석 완벽하게 유효하기 때문에 여기에 이해하기 아무것도 없다
일했다! 와우, 나는 2.0의 모니 커가 아마도 제작에 사용될 수있을 것이라고 생각했지만 실제로 존재하는 것은 다른 냄비 구멍을 내가 두려워하게 만들었다. – sheamus