私は、このモデルクラスを持っている:Entity Frameworkのの奇妙な行動
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<User> Collection1 { get; set; } = new List<User>();
public virtual ICollection<User> Collection2 { get; set; } = new List<User>();
}
それから私は、データベース内のいくつかのレコードを追加します:
var context = new UsersContext();
var user1 = new User();
var user2 = new User();
var user3 = new User();
user1.Name = "user1";
user2.Name = "user2";
user3.Name = "user3";
user1.Collection1.Add(user2);
user2.Collection1.Add(user3);
context.Users.Add(user1);
context.Users.Add(user2);
context.Users.Add(user3);
context.SaveChanges();
その後、私はこのクエリを実行します。
var user2 = context.Users.First(user => user.Name == "user2");
foreach (var u in user2.Collection2)
Console.WriteLine($"{user2.Name} Collection2 {u.Name}");
そして私は得る:
user2のコレクション2 user1の
Collection2
で私がレコードを持っているのはなぜ?それを修正する方法は?
UPDATE。
これは、それは不思議ではないですが、正常な動作テストプロジェクトhttps://drive.google.com/file/d/0BxP-1gZwSGL5S1c4cWN1Q2NsYVU/view
質問が明確ではありません。なぜレコードがあるのか、なぜレコードが 'user1'なのかを意味していますか? – peval27
実際に面白い動作。 EFのように、多対多の関係が設定されているようです。生成されたテーブルを確認することで確認できます。 –
@ peval27、私の英語には申し訳ありません。なぜコレクション2にレコードがあるのですか? 私はそれを追加しませんでした。 – Lightness