Entity Framework 5 を使用して、既存の MySQL データベースにクエリを実行しようとしています。コード ファーストを使用して、MSDN のこのチュートリアルに従って、既存のデータベースにマップするコード ベースのモデルを作成しました。
と の 2 つのテーブルがusers
ありbuddies
ます。AUser
にはid
、 a 、name
および がありemail
ます。ABuddy
には auser_id
と aがありbuddy_id
ます。AUser
にはたくさんBuddies
あります (これもUsers
です)。列はテーブルbuddy_id
に戻る外部キーです。Users
したがって、それぞれUser
に多くのUsers
スルーがありBuddies
ます。
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public IList<User> Buddies { get; set; }
}
これが私のデータベースアクセスコードです:
using (var db = new Models.fooContext())
{
foreach (Models.user user in db.users)
{
var u = new User
{
Id = user.id,
Name = user.name,
Email = user.email,
Buddies = new List<User>()
};
// this is obviously very inefficient but I am just
// trying to get anything to work
foreach (Models.buddy buddy in db.buddies) // this line throws an exception
{
if (buddy.user_id == user.id)
{
var b = new User();
// take buddy.user_id and find this user in the user table
u.Buddies.Add(b);
}
}
// serialize User and write it to a file here
}
}
このコードは、上記の行で次の例外をスローします。
System.Data.EntityCommandExecutionException: コマンド定義の実行中にエラーが発生しました。詳細については、内部例外を参照してください。」
内部例外はMySql.Data.MySqlClient.MySqlException
メッセージ付きです
この接続に関連付けられている開いている DataReader が既に存在し、最初に閉じる必要があります。
私の質問:
User
それぞれに many があることを EF に伝える関係を作成するにはどうすればよいBuddies
ですか?User
aが manyであることを EF が理解したらBuddies
、 を使用してそのレコードbuddy_id
を見つけるにはどうすればよいですか?User
Buddy