0

ここに私の質問があります.私は私の質問をできるだけ簡単にしようとします..だから、私はお互いに接続されていないデータベースに2つのクラスとそれぞれ2つのテーブルを持っています。それらをクラスAとクラスBと名付けましょう。お気に入り:

public class User
{
[Key]
public int userID{ get; set; }

public User(string aName, string aPhone, string aEmail)
{
    Name = aName;
    Email= aEmail;
    Phone= aPhone;
}

public string Name { get; set; }
public string Email{ get; set; }
public string Phone{ get; set; }
}

public class Work
{
[Key]
public int workID{ get; set; }

public Work(string aWorkName, string aAddress, string sPosition)
{   
    WorkName= aWorkName;
    Address= aAddress;
    Position= aPosition;
}
public string WorkName{ get; set; }
public string Address{ get; set; }
public string Position{ get; set; }

}

ここでやりたいことは、データベースに 3 番目のクラスと 3 番目のテーブルを作成することです。3 番目のテーブルの列に、前の 2 つのテーブルの情報を入力できるはずです。たとえば、その列は Name Phone Email WorkName Address Position である必要があります。したがって、NameID と workID を取得し、これらの主キーに基づいて、3 番目のテーブルにすべての情報を入力する必要があります。このような:

public class CombinedTable
{
[Key]
public int cID{ get; set; }
public User user{ get; set; }
public Work work{ get; set; }
}

メイン関数で次のようなクエリを言いましょう。

 var UserResult = from p in db.User
 where p.UserId.Equals(userID)
 select p;
 var WorkResult= from p in db.Work
 where p.WorkID.Equals(workID)
 select p;

var combinedInfo= new CombinedTable()
        {
            User = UserResult,
            Work= WorkResult
        };
        db.CombinedTable.Add(combinedInfo);
        int savedChanges = db.SaveChanges();

しかし、私は何かが欠けています.私はあなたがアイデアを得ると思います..私はエンティティフレームワークとコードを最初に使用しています.どんな提案も非常に高く評価されます.ありがとう. PS : もう一度明確にするために、workID=5 と UserID=1 を使用すると、3 番目のテーブルで、ID 1 のユーザーの情報から新しい行が作成され、ID 5 で作業できます。わかりますか?誰かがそれを手に入れることを願っています..

4

1 に答える 1

0

User エンティティと Work エンティティの間に 1 対多の関係があると仮定します (1 人のユーザーが複数の作業を持つことができます)。

public class User
{
  public int UserID { set;get;}
  public string Name { set;get;}
  public string Email{ set;get;}
  public virtual IEnumerable<Work> Works { set;get;}
}

public class Work
{
  public int WorkID { set;get;}
  public string WorkName { set;get;}
  public string Hours { set;get;}
  public string Location { set;get;}
}

これにより、1対多の関係を持つテーブルが作成され、このように簡単にクエリできるはずです

int userId=34;
var thatUser=dbContext.Users.Find(userId);
var works=thatUser.Works;

編集: 3 番目のテーブルが必要な場合は、そのクラスを作成します

public class UserWork
{
  public int UserWorkID { set;get;}
  public int UserID { set;get}
  public int WorkID { set;get;} 
  public virtual User User { set;get;}
  public virtual Work Work  {set;get;}
}
于 2012-05-27T19:17:11.323 に答える