代码之家  ›  专栏  ›  技术社区  ›  kosnkov

mac var从linq到某个实例

  •  1
  • kosnkov  · 技术社区  · 14 年前

    嗨,如果我创建一些类产品的实例,然后使用LINQ从数据库中获取一个产品,我可以将结果映射到这个实例吗?

    products produkt1 = new products();
    var oneProduct= (from p in db.products where p.number == 640 select p)
                    .FirstOrDefault();
    produkt1 = oneProduct;
    

    3 回复  |  直到 14 年前
        1
  •  1
  •   abatishchev Karl Johan    14 年前
    products oneProduct = (from p in db.products
                          where p.number == 640
                          select p).FirstOrDefault();
    

    products oneProduct = db.products.FirstOrDefault(p => p.number == 640);
    

    您不能将DB中的实例映射到刚刚创建的实例。您可以将对DB实例的引用保存到您的数据库,即替换:

     products produkt1 = new products(); // points to the first instance
     produkt1 = query.FirstOrDefault(...); // now points to the second instance. if this was the last reference, object probably will be deleted by GC soon
    

    class products
    {
        public void CloneFrom(products source)
        {
            this.SomeThing = source.SomeThing;
            ...
        }
    }
    

    在大多数情况下,这是一个坏主意,愚蠢的做法。

        2
  •  1
  •   Femaref    14 年前
    products produkt1 =  db.products.FirstOrDefault(p => p.number == 640);
    
        3
  •  0
  •   RobS    14 年前

    为什么不编辑所选实体(oneProduct)?

    您能详细说明一下您的意图是什么吗?是否要创建所选实体的副本,以便将新副本作为新行插入?