0

だから私はエンティティコードfirestで作業しており、次のようなユーザークラスがあります:

public class User
    {
        [Key]
        public string Username { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public DateTime LastModified { get; set; }
    }

「友達テーブル」を作成しようとしていますが、何を思いついたとしても、データベースの作成でエラーが発生します。これは私が現在Friends Classに持っているものです:

public class Friend
    {
        [Key, ForeignKey("User")]
        public virtual User MyUser { get; set; }

        [Key,ForeignKey("User")]
        public virtual User MyFriend { get; set; }

        public bool IsAccepted { get; set; }
    }

これは私が得るエラーです:

タイプ 'Core.Model.Friend' のプロパティ 'MyUser' の ForeignKeyAttribute が無効です。依存型「Core.Model.Friend」で外部キー名「User」が見つかりませんでした。Name 値は、外部キー プロパティ名のカンマ区切りのリストである必要があります。

私は何が欠けていますか?

4

1 に答える 1

2

Column属性を使用する必要があります。通常、私は次のようなものを使用します:

public class Friend
{
    [Key]
    [Column(Order = 0)]
    public int MyUserId { get; set; }

    [Key]
    [Column(Order = 1)]
    public int MyFriendId { get; set; }

    [ForeignKey("MyUserId")]
    public virtual User MyUser { get; set; }

    [ForeignKey("FriendId")]
    public virtual User MyFriend { get; set; }

    public bool IsAccepted { get; set; }
}

Column属性をナビゲーション プロパティに直接マップするとどうなるかわかりません。必要に応じて試してみて、何が起こるかを確認できます..しかし、上記は一般的に私にとってはうまくいきます。

または、流暢なマッピングを使用するように変更する場合は、次のようにすることができます。

HasKey(u => new { u.MyUserId , u.MyFriendId });
于 2013-03-18T02:00:31.837 に答える