Linq-to-SQL复制引用关系

时间:2011-08-12 16:55:34

标签: linq linq-to-sql

我的Linq-to-SQL类映射如下:

public class DbCategory
{
    public EntitySet<DbProduct> Products { get; set; }
    ...
}

public class DbProduct        
{
   public EntityRef<DbCategory> Category { get; set; }
   ...
}

然后我将我的通用模型作为

public class Category
{
    public IList<Product> Products { get; set; }
        ...
}

public class Product        
{
    public Category Category { get; set; }
        ...
}

现在我正在尝试获取我的产品

var products = from p in context.Products
               select 
               new Product
               {
                   Category = new Category
                   {
                       OtherProperty = p.Category.OtherProperty
                       ...
                       //Now how do I set 
                       //the products for this category? 
                   }
                };

如果我可以先实例化Product实例,然后调用Category.Products.Add(this);

,这应该很容易

但是在一个linq语句中完成这一切似乎很难。我错过了一些明显的东西,或者我的设计是否有缺陷?

1 个答案:

答案 0 :(得分:0)

您可以创建辅助方法

private static Product CreateProduct(Category category)
{
    Product p = new Product();
    p.OtherProperty = category.OtherProperty;
    // set product or whatever of category
    return p;
}

然后通过你的帮助方法创建。

var products = from p in context.Products
               select 
               CreateProduct(p.Category);