1

2つの主キー列を持つ2つのテーブルがあります。それらの構造は次のとおりです。

public class X
{
    public int Id {get;set;}
    public int line {get;set;}
}

public class Y
{
    public int Id {get;set;}
    public int line {get;set;}
}

それらは1対1の関係に関連しています。

エンティティフレームワークコードで2つのテーブルを最初にマップして、それらの関係を反映するにはどうすればよいですか。

表Yはオプションですが、表Xは必須です。

よろしくお願いします。

4

2 に答える 2

1

私が正しく理解していれば、おそらくこれがあなたが探しているものです:

public class X
{
    [Key, ForeignKey("Y"), Column(Order=0)]
    public int ID { get; set; }
    [Key, ForeignKey("Y"), Column(Order=1)]
    public int line { get; set; }

    public virtual Y Y { get; set; }
}

public class Y
{
    [Key, Column(Order=0)]
    public int ID { get; set; }
    [Key, Column(Order=1)]
    public int line { get; set; }

    public virtual X X { get; set; }
}

属性を使用Keyすると、これらのプロパティがテーブルのキーになることを EF と言っています。属性を追加するForeignKeyと、外部キーである関係を表すナビゲーション プロパティを EF に伝える情報が提供されます。最後に、Column属性は のどのプロパティが のどのプロパティとX一致する必要があるかを EF に伝えていますY。問題を誤解した場合は、答えを変更できるようにお知らせください。

于 2013-03-25T05:13:34.313 に答える
0
public class X
{
    [Key]
    public int ID { get; set; }
    public int line {get; set;}

    public virtual Y Y { get; set; }
}

public class Y
{
    [Key]
    public int ID { get; set; }
    public int line {get; set;}

    public virtual X X { get; set; }
}

構成を追加し、

modelBuilder.Entity<X>()
            .HasOptional<Y>(u => u.ID)
            .WithOptionalDependent(c => c.ID)
            .Map(p => p.MapKey("ID"));
于 2013-03-21T11:40:24.567 に答える