私はSqlデータベースに2つのテーブルを持っています。たとえば、UserとUserEducationテーブル。 ユーザテーブルには複数のレコードがあり、ユーザごとにUserEducation Tableに1つのレコードがあります。私はグリッドビューでこれらの2つのテーブルを結合してすべてのレコードを表示したいですか? Entity Frameworkを使用してこれを行うにはどうすればよいですか?最初のテーブルからのレコードのリストの2番目のテーブルベースから複数のレコードを取得する方法EFを使用して
答えて
またはエンティティへのLINQを使用してテーブルを結合:
using (var context = new YourContext)
{
var users = context.UserDbSet;
var userEdications = context.UserEdication.DbSet ;
var joinedTables = from user in users
join userEdication in userEdications on user.userId = userEdication.userId
select new OutPutEntity
{
Name = user.Name,
Edication = userEdication.Edication
}
gridView.DataSource = joinedTables.toList(); // should be placed outside the using. (here just as a sample)
}
利点 - あなたはIQurableレベルで出力形式を指定することができます。欠点 - それは複雑に見えます。
あなたは、単にユーザーからnavigationpropertyを使用することができます:1つのマッピング一つにあり
var user = new User();
user.UserEducation.[Property];
以来、私は1つのテーブルを作る好むだろう。しかし具体的には次のようにすることができます:
entityframeworkcontext obj = new entityframeworkContext(); xyz = obj.database.SqlQuery( "modeltablefield1、u.fieldname2をmodeltablefield2、ued.fieldname1をmodeltablefield3、ued.fieldname2をmodeltablefield4として選択してください。ユーザーが内部メンバーになるには、UserEducationをu.commonfield = ued.commonfieldに追加してください。 ");
ここでは、共通のフィールドは2番目のテーブルの外部キーになります モデルテーブルは、複合クエリ(MVC固有)から必要な論理テーブルです。
私はあなたのユースケースに合わせてコンソールアプリケーションを作成しました。出力をグリッドビューにバインドするWindowsフォームまたはWebベースのアプリケーションにこのコードを再利用する必要があります。私はPOCOクラスのいくつかのプロパティを想定しています。ユーザーや教育エンティティに保存するすべての値に基づいて、いつでも変更できます。私は自分のコードスニペットに接続文字列について言及していません。 Entityフレームワークは、接続文字列が指定されていない場合、またはapp.configファイルまたはweb.configファイルに接続文字列が記述されているデータベースに接続する場合、コンピュータ上のSQL Expressデータベースに自動的に接続します。お役に立てれば!
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
namespace UsersCodeFirst
{
class Program
{
static void Main(string[] args)
{
using (var db = new EfContext())
{
// Display all users with their education from the database
var query = from user in db.Users
join userEducation in db.UserEducations
on user.UserId equals userEducation.UserId
orderby user.Name
select new
{
Name = user.Name,
UserEducation = userEducation.CourseName
};
//bind to grid by setting grid data source to query.ToList()
}
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
}
public class User
{
public string UserId { get; set; }
public string Name { get; set; }
public virtual List<Education> Posts { get; set; }
}
public class Education
{
public string EducationId { get; set; }
public string CourseName { get; set; }
public string UserId { get; set; }
}
public class EfContext : DbContext
{
public DbSet<Education> UserEducations { get; set; }
public DbSet<User> Users { get; set; }
}
}
DbContextクラスへの参照を取得するには、プロジェクトにEntity Framework Nugetパッケージを追加する必要があります。
良い説明、私はウラジミール – sa227
- 1. Yii2:テーブルの最後から2番目(最後から2番目)のレコードを選択する方法は?
- 2. 最後のレコードと2番目のレコードを取得する方法?サブクエリとしてどのように使用するか。テーブルの上から
- 3. 複数のテーブルからレコードを取得
- 4. 複数のテーブルからレコードを取得する方法
- 5. 最初のテーブルのIDを参照して2番目のテーブルから名前を取得する方法は?
- 6. ハイブのレコードから2番目の最終日を取得するには?
- 7. WSO2 DSSを使用してmongodbから2番目のレコードを取得する方法はありますか?
- 8. 複数のテーブルからレコードを最適に取得する方法
- 9. GROUPとCOUNTを使用して、1つのテーブルのリストを取得できますか?ActiveRecordの2番目のテーブルからのレコードの数は?
- 10. ファイアストアDBから2番目に最後のレコードを取得する、javascript
- 11. アクセス:最初のレコードと同じレコードに2番目のフォームを開く方法?
- 12. Doctrine 2 - 履歴テーブルから最新のレコードを取得する
- 13. SQLにlinqの2番目のレコードを取得する方法
- 14. 2番目のテーブルから2番目のテーブルからデータを取得する方法Datamapper
- 15. 2番目を除いて挿入、既存のレコードから最初のレコードを追加する
- 16. mysqlのgroup byクエリを使用して1つのテーブルから複数のレコードを取得する方法
- 17. テーブル内の重複レコードから最新のIDを取得
- 18. データベースから最新のレコードを取得する複数のクエリ
- 19. のみカーソルからレコードから最初の値を取得
- 20. CakePHPとAJAXを使用してテーブル内の複数のレコードから1つのレコードを削除する方法
- 21. qtのQSqlQueryからn番目のレコードを取得する方法
- 22. SQL:xml列から複数のレコードを取得する方法
- 23. ASP.NET MVCのEntity Frameworkでストアドプロシージャを使用して複数のテーブルから複数のレコードを取得する
- 24. MySQL - 2番目のテーブルの最後のレコードを返し、最初のテーブルのすべてを返します。
- 25. 複数のテーブルからレコードを取得する
- 26. テーブルからインデックスを使用せずにn番目のレコードを取得する方法は?
- 27. 最初のテーブルから2番目のテーブルにメールを保存
- 28. MYSQLは、2番目のテーブルの複数のレコードからMIN&MAX値を持つテーブルを記録します。
- 29. MySQL:テーブル内の重複レコードから最新IDを取得
- 30. 他のテーブルからレコードのIDを取得する方法は?
ユーザテーブルのリストを取得する方法ユーザテーブルのリストに基づく – sa227