2 つのモデルと両方のシード値の間に 1 対多の関係を作成したいと考えています。EFが「多くの」モデルをコレクションにキャストしようとしているというエラーが表示されますが。2 つのモデルは次のとおりです。
製品 (多数):
public class Product
{
[Key]
public int Id { get; set; }
[Required]
public string ModelNum { get; set; }
[ForeignKey("Id")]
public virtual Market Market { get; set; }
public string Brand { get; set; }
public string Type { get; set; }
public bool IsSuggestedProduct { get; set; }
}
市場 (1):
public class Market
{
[Key]
public int Id { get; set; }
public string Code { get; set; }
public virtual ICollection<Product> Products { get; set; }
}
シードしようとしています:
Market market = new Market() { Code = "US" };
market.Products = new List<Product>()
{
new Product
{
ModelNum = "modelNum1",
Brand = "Brand1",
Market = market,
IsSuggestedProduct = false
},
new Product
{
ModelNum = "modelNum2",
Brand = "Brand2",
Market = market,
IsSuggestedProduct = true,
Type = "Type1"
}
};
context.Markets.AddOrUpdate(m => m.Id, market);
context.SaveChanges();
次のエラーを取得するのは「AddOrUpdate」にあります。
System.InvalidCastException was unhandled by user code
HResult=-2147467262
Message=Unable to cast object of type 'System.Collections.Generic.List`1[TestAPI.Models.Product]' to type 'TestAPI.Models.Product'.
Source=System.Data.Entity
更新: jure のおかげで、Product の「ForeignKey」属性を削除したところ、機能するようになりました。