none
Linq 在更新的时候为什么更新不了?? RRS feed

  • 问题

  • 下面是代码:
     public void saveEdit(Contacts contacts)
            {
                Contacts c = contactContext.Contacts.SingleOrDefault(temp => temp.id == contacts.id);
                c.FirstName = contacts.FirstName;
                c.LastName = contacts.LastName;
                c.Phone = contacts.Phone;
               // c = contacts;
                contactContext.SubmitChanges();
            }
    
    上面这个可以插入,因为对象c的内容已经改变了,所以可以更新,
    但是假如是下面的代码的话,就不能更新

     public void saveEdit(Contacts contacts)
            {
                Contacts c = contactContext.Contacts.SingleOrDefault(temp => temp.id == contacts.id);
                //c.FirstName = contacts.FirstName;
                //c.LastName = contacts.LastName;
                //c.Phone = contacts.Phone;
                 c = contacts;
                contactContext.SubmitChanges();
            }
    
    这个不能跟新我理解是这个样子的:
    由于用了c = contacts,
    所以此时这个c就不是最开始的那个了,不知道我说的请不清楚,明不明白,
    我想问的是:假如不用最上面的那个把属性重新赋值的方法的话,有没有别的方法!
    谢谢!!

    怎么老有不会的??
    2009年11月12日 6:54

答案

  • 这样:

     public void saveEdit(Contacts contacts)
            {

                contactContext.Contacts.Attach(contacts, true); //或者根据你的实际需要使用其他重载。
                contactContext.SubmitChanges();
            }
    • 已标记为答案 痴迷.Net 2009年11月12日 9:35
    2009年11月12日 9:24

全部回复

  • 你这样做法 c已经不是linq强类型了  是普通类型contects实例了  不是赋值 是引用contects类型  

    • 已建议为答案 mldark 2009年11月12日 9:24
    • 取消建议作为答案 痴迷.Net 2009年11月13日 7:18
    2009年11月12日 8:49
  • 谢谢!
    但是我该怎么写呢??
    刚刚接触,麻烦您在解答一下!!!


    怎么老有不会的??
    2009年11月12日 8:59
  • 没想到有别的写法 你的上面写法已经最好的逻辑了
    除非你再定义个方法逻辑让contects所有属性赋值
    像c.contectsupdata(contects)
    • 已建议为答案 mldark 2009年11月12日 9:24
    • 取消建议作为答案 痴迷.Net 2009年11月12日 9:35
    2009年11月12日 9:12
  • 哦,谢谢!

    主要是我想要是有n个属性岂不是很麻烦??
    所以我想是不是Linq里面有类似的方法可以直接赋值的!!

    看来我想多了,呵呵!
    怎么老有不会的??
    2009年11月12日 9:18
  • 这样:

     public void saveEdit(Contacts contacts)
            {

                contactContext.Contacts.Attach(contacts, true); //或者根据你的实际需要使用其他重载。
                contactContext.SubmitChanges();
            }
    • 已标记为答案 痴迷.Net 2009年11月12日 9:35
    2009年11月12日 9:24
  • 这样:

     public void saveEdit(Contacts contacts)
            {

                contactContext.Contacts.Attach(contacts, true); //或者根据你的实际需要使用其他重载。
                contactContext.SubmitChanges();
            }

    正确,谢谢!!!
    怎么老有不会的??
    2009年11月12日 9:35