使用LINQ Context更新记录?

Mad*_* Zu 2 .net c# linq linq-to-entities linq-to-sql

我试图用单个值更新来更新用户表,但我无法弄清楚我做错了什么.这就是我所拥有的:

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();

            }
        }
Run Code Online (Sandbox Code Playgroud)

我离开了吗?当我点击更新时没有任何反应.怎么说,用户名=用户名?我做得对吗?

基本上需要一个简单的:

update datUser set ROB = "Y" where AccountName= "myusername"
Run Code Online (Sandbox Code Playgroud)

在使用Context的LINQ中,它变得更复杂一些

请帮忙.

spe*_*der 5

您没有将新实体添加到上下文中,因此在保存时,上下文不会发现任何更改.你需要......

ctx.datUserRoles.Add(datUserRole)
Run Code Online (Sandbox Code Playgroud)

要进行更新,您需要从上下文中检索实体,对其进行更改,然后保存...所以:

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
}
Run Code Online (Sandbox Code Playgroud)