私は次のコードの最初のモデルを持っています。 1人のユーザーが複数の製品を持つことができるため、ユーザーと製品の間に1対多の関係があります。指定されたスキーマは無効です。エラー:タイプ 'User'が利用できないため、 'Product_CreatedByUser'という関係はロードされませんでした。
Schema specified is not valid. Errors: The relationship 'Models.Product_CreatedByUser' was not loaded because the type 'User' is not available.
私は最初にコードを使用していますが、これで助けてもらえますか?
ユーザー:
public class User
{
public long UserId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public virtual ICollection<Product> Products { get; set; }
}
製品: - ModifiedBy
通じCreatedBy
と1から1
public class Product
{
public long ProductId { get; set; }
public string ProductCode { get; set; }
public string Name { get; set; }
public DateTime CreatedDate { get; set; }
public long CreatedBy { get; set; }
public long ModifiedBy { get; set; }
public DateTime ModifiedDate { get; set; }
public bool IsDeleted { get; set; }
[ForeignKey("CreatedBy")]
public virtual User CreatedByUser { get; set; }
[ForeignKey("ModifiedBy")]
public virtual User ModifiedByUser { get; set; }
}
:あなたがオンに流暢なコンフィギュレーション・とにかくを必要とするので、カスケードは、あなたがより良い
ForeignKey
とInverseProperty
注釈を削除し、流暢に全体を構成するだろう、一方または両方の関係のためにオフに削除します'User.Products'ナビゲーションプロパティで表されるはずの' User'と 'Product'が作成または変更されていますか? –@IvanStoevユーザーが製品を追加または更新できるので、両方ともにする必要があります。 – Nirmal
問題は、残念ながらそれは*できません* - EFは、各リレーションシップに対して個別のナビゲーションプロパティを必要とします。したがって、 'User.CreatedProducts'や' User.ModifiedProducts'のような2つのプロパティを作成し、適切にマップするか、 'InverseProperty'属性や流暢な設定を使って' User.Products'をFKの1つにマッピングします。 –