0

お役に立てれば幸いです。Linq to Sql を使用して階層化された Web サイトを開発しています。DBML デザイナーで memberState という新しいクラス (またはオブジェクト) を作成しました。このオブジェクトは、データベース内の実際のテーブルではありません。私は中間層にこのメソッドを持っています:

public override IEnumerable(memberState) GetMembersByState(string @state)
{
using (BulletinWizardDataContext context = DataContext)
{
IEnumerable(memberState) mems = (from m in context.Members
join ma in context.MemberAddresses
on m.UserId equals ma.UserId
join s context.States
on ma.StateId は s.StateId
に等しい s.StateName == @state
select new memberState
{
userId = m.UserID,
firstName = m.FirstName,
middleInitial = m.MiddleInitial,
lastName = m.LastName,
createDate = m.CreateDate、
modifyDate = m.ModifyDate
}).ToArray(memberState)();
メモリを返します。
}
}

結合内のテーブル (Members、States、および MemberAddresses は、データベース内の実際のテーブルです)。上記のクエリで使用できるように、オブジェクト memberStates を作成しました ( Select New memberStateに注意してください。Web ページでデータが更新されたときに、変更をメンバー テーブルに保持するにはどうすればよいですか? 私のメンバー テーブルは次の列で構成されています。 : UserId, FirstName, MiddleInitial, LastName, CreateDate, ModifyDate.変更をデータベースに保存する方法がわかりません。

ありがとう、

4

3 に答える 3

0
var m = myContext.Members.Single(m=> m.UserID == myMemState.userID);
m.FirstName = myMemState.firstName;
m.MiddleInitial = myMemState.middleInitial;
...

それが手っ取り早い方法でしょう。データベースへの追加のラウンドトリップを行いますが、うまく機能します。それが問題である場合は、Jakob が提案したように Attach を実行してください。そのためには、楽観的な更新の構成を確認し、添付を行うときに元のフィールドがあることを確認するなど、いくつかの追加の手順を実行する必要があります。

于 2009-04-12T13:45:36.667 に答える
0

Member テーブルがある場合、ほとんどの場合、dbml には Member クラスが含まれます。データベース内のメンバーを更新するには、新しい Member オブジェクトを作成し、それを BulletinWizardDataContext.Members コレクションにアタッチする必要があります。次のコードに似た何かがうまくいくはずです (私はコードをテストしていません):

using (BulletinWizardDataContext context = DataContext)
{
    Member m = new Member() { UserId = userId };
    context.Members.Attach(m);
    m.FirstName = firstName;
    // Set other properties
    context.SubmitChanges();
}

プロパティを設定する前に、Attach を呼び出す必要があります。また、Linq2Sql では、オブジェクトのプロパティが既定値 (数値の場合は 0、ブール値の場合は false、文字列の場合は null など) に設定されている場合、Attach に問題があります。この場合、Attach は正しい SQL を生成しません。

于 2009-04-07T14:55:09.610 に答える
0

私の記憶が正しければ、さまざまなテーブル (Members、States、MemberAddresses) からビューを作成し、それをデータ コンテキストに追加できます。次に、ビュー オブジェクト内のデータへの変更を保存できます。データベースとデータ コンテキストの両方ですべての関係が明確に設定/定義されている限り、linq to sql はコミットを正しく処理します。

于 2009-04-07T14:28:59.563 に答える