System
Language:C#
Database:SQL
IDE:C# Express 2010
User オブジェクト/クラスと db テーブルがあります。ユーザーには複数のアドレスがあり、既にアドレス テーブルを定義しています。アドレスを DB に追加してコミットするにはどうすればよいですか
ユーザー用の Add 関数を作成しました (以下を参照)。ユーザー クラスはリスト アドレスを保持します。
ユーザークラス
int id
string name
List<Address> adresses
テーブル ユーザー
id
name
addresses
テーブルアドレス
id
address
user_id (FK)
ユーザー オブジェクトを追加するためのユーザー クラスに Add 関数があります。SO でわかりやすくするために処理コードを削除しました。
私の質問は、追加したばかりのユーザーの ID を取得し、アドレスをデータベースに追加するにはどうすればよいかということです。また、アドレス テーブルで FK を定義するにはどうすればよいですか
class User {
public static bool Add(User user, UserOptions option = UserOptions.System)
{
//Instantiate the DataClassesDataContext
var db = DBContext.Create();
//Make Sure User does not exist
//returns true if no existing user
if (Users.validateForAdd(user))
{
//Now add
db.Users.InsertOnSubmit(user);
//I assume I would get the id of the user just added but not sure how I do that
db.SubmitChanges();
return true;
}
//Failed to add
return false;
}
最終的解決
以下の回答とコメントから最終的な解決策を投稿すると思いました。
//
// Creating and setting the Objects
//
User user = new User(name="john doe");
EntitySet < Address > adressList = new EntitySet<Address>();
adressList.Add(new Address("Residential Home");
adressList.Add(new Address("Holiday Home...");
user.address = adressList;
//
//Persisting to the DB
//
var db = new DataContext();
db.Results.InsertOnSubmit(result);
db.SubmitChanges();