EntityRef-объект не обновляется после LINQ-обновления? - PullRequest
1 голос
/ 25 мая 2011

Если есть 2 класса сущностей, ProductEntity и CategoryEntity:

[Table(Name = "Products")]
public class ProductEntity
{
    // Data Members
    private int _productID;
    private string _productName;
    private int _categoryID;
    private EntityRef<CategoryEntity> _category;

    // Properties
    [Column(DbType = "int", IsPrimaryKey = true, IsDbGenerated = true)]
    public int ProductID
    {
        get { return _productID; }
        set { _productID = value; }
    }

    [Column(DbType = "nvarchar(40)")]
    public string ProductName
    {
        get { return _productName; }
        set { _productName = value; }
    }

    [Column(DbType = "int")]
    public int CategoryID
    {
        get { return _categoryID; }
        set { _categoryID = value; }
    }

    [Association(Storage = "_category",
        ThisKey = "CategoryID",
        OtherKey = "CategoryID")]
    public CategoryEntity Category
    {
        get { return _category.Entity; }
        set { _category.Entity = value; }
    }
}   // class ProductEntity

[Table(Name = "Categories")]
public class CategoryEntity
{
    // Data Members
    private int _categoryID;
    private string _categoryName;

    // Properties
    [Column(DbType = "int", IsPrimaryKey = true)]
    public int CategoryID
    {
        get { return _categoryID; } 
        set { _categoryID = value; }
    }

    [Column(DbType = "nvarchar(40)")]
    public string CategoryName
    {
        get { return _categoryName; }
        set { _categoryName = value; }
    }
}   // class CategoryEntity

Используя LINQ, я выполняю Select следующим образом (подробности опущены):

DataContext _northwindCtx = new DataContext(connectionString);
 DataLoadOptions loadOptions = new DataLoadOptions();
 loadOptions.LoadWith<ProductEntity>
                    (ProductEntity => ProductEntity.Category);
 _northwindCtx.LoadOptions = loadOptions;

 Table<ProductEntity> productsList = 
                    _northwindCtx.GetTable<ProductEntity>();
 var productsQuery =
        from ProductEntity product in productsList
       where product.ProductName.StartsWith(productname)
       select product;

List<ProductEntity> productList =  productsQuery.ToList();

Получено значение для 1-й записи в списке

    productList[0].ProductName          "TestProduct"   

    productList[0].CategoryID           1   

    productList[0].Category.CategoryID      "1" 

    productList[0].Category.CategoryName        "Beverages"

Затем я обновляю CategoryID до 8 Хорошо, пока все хорошо

Я повторно отменяю выбор, как указано выше. Полученное значение для 1-ой записи теперь

    productList[0].ProductName      "TestProduct"   

    productList[0].CategoryID       8                        OK

    productList[0].Category.CategoryID  "1"                    ??

    productList[0].Category.CategoryName    "Beverages"            ??

Свойство CategoryID ProductEntity было обновлено, а свойство Category - нет, другими словами, объект EntityRef не был перестроен ???

Почему бы и нет? Как я могу сделать эту работу?

спасибо Chris

...