2017-06-20 7 views
1

は、だから私は、次のようにシンプルな製品-プレビュー1から1の関係を作成しようとしている1対1の関係の外部キーを設定しませんプレビューテーブルに、製品 を指す外部キーがあることを期待していましたが、移行を実行した後、私は通常のフィールドとして取得します。EFコードファーストは

enter image description here

私は間違っているのですか?

答えて

0

あなたはほとんどそれを持ってあなただけのパズルの一片...あなたはまた、追加する必要があり

[ForeignKey("ProductId")] 
public virtual Product Product { get; set; } 

...プレビューオブジェクトへ

public Guid ProductId { get; set; } 

を逃しました。

ForeignKey属性はどちらのプロパティにも置くことができ、文字列はペアのもう一方を参照する必要があります。

現在書かれているように、問題のテーブルでプライマリキーと外部キーの両方の値をIdプロパティに指定しようとしています。

だからあなたの最終的なコードが何かのように見えるかもしれません...私はまた、代わりにIList<T>のようなものを使用List<T>などの具体的なコレクション型を使用しないことをお勧めします注意点として

public class Product : BaseEntity 
{ 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]   
    public Guid Id { get; set; } 
    [ForeignKey("User")] 
    public Guid UserId { get; set; } 
    public string name { get; set; } 

    public virtual EPS eps { get; set; } 
    public virtual Preview preview { get; set; } 
    public virtual User user { get; set; } 
} 

public class Preview : BaseEntity 
{ 
    [Key]   
    public Guid Id { get; set; } 

    [ForeignKey("Product")] 
    public Guid ProductId { get; set; } 

    public string imagePath { get; set; } 
    public double width { get; set; } 
    public double height { get; set; } 

    public virtual List<TextPreview> Texts { get; set; } 
    public virtual List<ImagePlaceHolder> ImagePlaceHolders { get; set; } 

    public virtual Product Product { get; set; } 
} 

ICollection<T>より良いコードの再利用と拡張性を促進します。

+0

ご協力ありがとうございますが、あなたの提案に従えば、このエラーが発生します。Multiplicityは役割 'Preview_product_Source'の関係 'Preview_product'で有効ではありません。依存ロールのプロパティはキープロパティではないため、依存ロールの多重度の上限は「*」でなければなりません。 –

+0

これはこの問題を解決したもので、今ここで説明した別の問題があります... https://stackoverflow.com/questions/9292738/entity-framework-4-0-error-113-multiplicity-is-not-valid -in-role – War

+0

本質的に1対1の関係があり、問題は0-1対1の関係である可能性があります... guid ProductId nullable "Guid?"これを修正するかもしれない。 – War

関連する問題