2

単一の値の更新でユーザーテーブルを更新しようとしていますが、何が間違っているのか理解できません。これは私が持っているものです:

public static void ApplyROB(string  ROBread, string userName)
        {
            using (SERTEntities ctx = CommonSERT.GetSERTContext())
            {
                    // +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
                    // Audit of the transfer
                datUser trUser = new datUserRole();
                trUser.ROB = ROBread;
                trUser.AccountName = userName;
                // Persist update to DB
                ctx.SaveChanges();

            }
        }

私は道を離れていますか?アップデートをクリックしても何も起こりません。ユーザー名=ユーザー名とはどうすればよいですか?私はそれを正しくしましたか?

基本的に簡単なものが必要です:

update datUser set ROB = "Y" where AccountName= "myusername"

コンテキストを使用するLINQではもう少し複雑であることが判明しています

助けてください。

4

3 に答える 3

5

新しいエンティティをコンテキストに追加していないため、保存すると、コンテキストは変更を認識しません。あなたは次のようなものが必要です...

ctx.datUserRoles.Add(datUserRole)

更新を行うには、コンテキストからエンティティを取得し、それに変更を加えてから保存する必要があります...そう:

var entity=ctx.datUserRoles.SingleOrDefault(dur=>dur.AccountName==someUserName);
if(entity!=null)
{
    entity.someProp=someVal;
    ctx.SaveChanges();
}
else
{
    throw new UnexpectedOperationException(); //or however you want to fail
}
于 2012-05-08T15:08:43.960 に答える
2

更新が必要な場合。多分このようなもの:

public static void ApplyROB(string  ROBread, string userName)
{
    using (SERTEntities ctx = CommonSERT.GetSERTContext())
    {
        var trUser= ctx.datUserRole.Where(a=>a.AccountName==userName)
                                   .FirstOrDefault();
        if(trUser!=null)
        {
            trUser.ROB = ROBread;
            ctx.SaveChanges();
        }
    }
}

常に更新するものがあると確信している場合は、を使用できますFirst()。その後、あなたはであるかどうかを確認する必要はありませtrUsernull

于 2012-05-08T15:11:34.063 に答える
1

支出者はある意味では正しいが、別の意味では正しくない。既存のレコードを更新したい。

そのためには、最初にレコードを選択する必要があります。たとえば、次のようになります。

var user = 
    (from u in ctx.datUserRoles 
    where u.AccountName == "accountname"
    select u).FirstOrDefault();

同じタイプの有効なものはどこaccountnameにありますか?それは問題ではありません。好きなように選択できるので、基準を満たすためにそれを修正することができます。次に、アイテムを入手したら、次のことを行います。

if (user != null) {
    user.ROB = ROBread;
    ctx.SaveChanges();
}
于 2012-05-08T15:15:13.813 に答える