0

コレクション型のナビゲーション プロパティの初期化について混乱しています。Web で見られる例では、プロパティは常にクラス コンストラクターで明示的に初期化されますが、私のプロジェクトでは、そのようなプロパティのセットが 2 つあり、1 つはそのような初期化なしで動作し、1 つはそうではありません。

public class User
{
    public int UserId { get; set; }

    [System.ComponentModel.DataAnnotations.Schema.InverseProperty("Requested")]
    public virtual System.Collections.Generic.ICollection<Friendship> RequestedFriendships { get; set; }

    [System.ComponentModel.DataAnnotations.Schema.InverseProperty("Received")]
    public virtual System.Collections.Generic.ICollection<Message> ReceivedMessages { get; set; }
}

public class Message
{
    public int MessageId { get; set; }
    string Message { get; set; }
    public virtual System.Collections.Generic.ICollection<User> Received { get; set; }
} 

public class Friendship
{
    public int FriendshipId { get; set; }
    public int RequestedUserId { get; set; }
    public virtual User Requested { get; set; }
}

以下の作品:

db.Users.Single(u => u.UserId == userId).RequestedFriendships.Add(new B.Models.Friendship
{
    RequestedUserId = userId,
});

これも:

B.Models.Message message = db.Messages.Add(new B.Models.Message
{
    Message = text
});
db.SaveChanges();

ただし、上記に従って、以下は失敗します。

message.Received.Add(db.Users.Single(u => u.UserId == userId));

message.Received以上ですのでnull。ここで最初に成功したものとの違いは何ですか?

4

1 に答える 1