我已經煮下來到一個相當小的用例解決逆特性:實體框架的核心甚至不能標註
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