我在这个主题上还有一些其他帖子,但我还没有得到正确的答案(我自己的错,我确定)但是我想建立一个数据库,我已经设置了多个到多个关系,但我无法弄清楚如何使用第一个实体id为第二个实体播种。
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; }
}
要明确 - 我可以正确地为用户播种没有问题,如果有任何拼写错误或复制粘贴错误他们不是什么大问题,因为我知道一切正常,除了能够创建已经收件人的列表被播种了。
提前致谢
答案 0 :(得分: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)
}
}
答案 1 :(得分:0)
我注意到的第一件事是你要将Ints添加到收件人列表,而不是用户对象
如果您尝试这样的代码会发生什么:
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> {users[0],users[1] } // <<< Problem is here
}
}
messages.ForEach(p => context.Messages.Add(p));
context.SaveChanges();
或者你可以尝试这个:
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> {context.Users.Where(u=>u.Id==1),context.Users.Where(u=>u.Id==1) }
}
}
messages.ForEach(p => context.Messages.Add(p));
context.SaveChanges();