2

私が見たこのトピックに関する他のいくつかの投稿がありますが、まだ正しい答えを得ることができませんでした (私自身のせいだと確信しています)。最初のエンティティ ID で 2 番目のエンティティをシードする方法がわかりません。

        var users = new List<User>()
        {
            new User()
            {
                Id = 1,
                FirstName = "Clark",
                LastName = "Kent"
            },
            new User()
            {
                Id = 2,
                FirstName = "Lex",
                LastName = "Luther"
            }
        };
        users.ForEach(p => context.Users.Add(p));
        var messages = new List<Message>()
        {
            new Message()
            {
                Id = 1,
                SenderId = 2,
                Recipients = new List<User> { Id = 2, Id = 3}  // <<< Problem is here
            }
        }
        messages.ForEach(p => context.Messages.Add(p));            
        base.Seed(context);

私のメッセージクラス。

public class Message
{
    public int Id { get; set; }
    public int SenderId { get; set; }
    public int RecipientsId { get; set; }
    public virtual User Sender { get; set; }
    public virtual ICollection<User> Recipients { get; set; }
}

私のユーザークラス。

public class User
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public virtual ICollection<Message> Messages { get; set; }
}

明確にするために-問題なく適切にユーザーをシードできます。タイプミスやコピーペーストエラーがある場合、シード済みの受信者のリストを作成できる以外にすべてが機能していることを知っているため、大したことではありません。

前もって感謝します

4

2 に答える 2

3

これは古いスレッドですが、同様の問題が発生したばかりなので、回答を提供すると思いました。上記で作成したユーザー オブジェクトを照会する必要があります

var messages = new List<Message>()
    {
        new Message()
        {
            Id = 1,
            SenderId = 2,
            Recipients = new List<User>()
            {
               users.Single(u => u.Id == 1),
               users.Single(u => u.Id == 2)
        }
    }
于 2014-03-11T18:37:56.947 に答える