1

序章

  • Entity Framework は初めてです
  • コードファーストを使用しています

使用事例

私は次の表をしなければなりません

[Table("TBL_UserVariant")]
public class UserVariant
{
    [Key, Column(Order = 0)]
    public int UserId { get; set; }
    [Key, Column(Order = 1)]
    public int VarId { get; set; }
    public string Value { get; set; }
}

[Table("TBL_UserProfile")]
public class UserProfile
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int UserId { get; set; }

    public string eMail { get; set; }
}

TBL_UserProfile が、TBL_UserProfile::UserId == TBL_UserVariant::UserId であるすべての TBL_UserVariant エントリのリストを参照するようにします。

以下は私の目標の例です

[Table("TBL_UserProfile")]
public class UserProfile
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int UserId { get; set; }

    public string eMail { get; set; }

    public UserVariant[] variants;
}

「UserProfile::variants」には、「TBL_UserProfile::UserId == TBL_UserVariant::UserId」の項目のリストを含める必要があります。

質問

これは EF を使用して直接可能ですか? または、「UserProfile::variants」を~手動で~入力するラッパーを実装する必要がありますか?

4

3 に答える 3

0

UserProfile エンティティにナビゲーション プロパティを追加するだけです。

    [Table("TBL_UserProfile")]
    public class UserProfile
    {
        [Key]
        [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
        public int UserId { get; set; }

        public string eMail { get; set; }
        public virtual ICollection<UserVariant> UserVariants { get; set; }
    }
于 2013-04-09T12:58:14.807 に答える
0

必要なものは次のとおりです。EFが残りを処理します。

[Table("TBL_UserProfile")]
public class UserProfile
{
    [Key]
    public int UserId { get; set; }
    public string eMail { get; set; }

    public virtual ICollection<UserVariant> Variants { get; set; }
}

[Table("TBL_UserVariant")]
public class UserVariant
{
    [Key]
    public int VarId { get; set; }
    public UserProfile User { get; set; }
    public string Value { get; set; }
}
于 2013-04-09T12:59:29.347 に答える
0

あなたが求めているのは、UserProfileMany にマップされたone が欲しいということだと思いますUserVariants

その場合、UserProfile クラスにコレクションを追加する必要があります。

public virtual ICollection<UserVariant> UserVariants { get; set; }

[Key]また、VarId にあると思われる UserVariant クラスのプロパティを修正する必要があります。その後、ナビゲーションプロパティを指定するだけです

[Key]
public int VarId { get; set; }
public UserProfile User { get; set; }

編集

余談ですが、命名規則はいたるところにあります。テーブル名の前に を付けないでくださいTBL_。すべてのプロパティ/列を大文字にします。たとえばEmail、そうではありませんeMail

于 2013-04-09T12:59:58.783 に答える