小编Mal*_*v20的帖子

从对象上下文中分离实体

在我的模型中,我有两个类别和产品.他们之间存在着许多关系.我正在使用实体框架的代码优先方法.我正在尝试创建一个编辑类别和产品之间映射的函数,但是我收到了一个错误.

IEntityChangeTracker的多个实例不能引用实体对象.

我发现在实体框架中关闭连接后,实体仍在跟踪.
所以我假设我必须从ObjectContext手动分离实体,但我的解决方案不起作用.这是我的控制器代码

public ActionResult Edit(int id)
    {
        Product product = db.Products.Find(id);
        ViewData["categories"] = _categories.GetAllCategories();
        ViewBag.CompanyID = new SelectList(db.Companies, "CompanyID", "Name", product.CompanyID);
        return View(product);
    }

    [HttpPost]
    public ActionResult Edit(FormCollection collection, Product product)
    {
        if (ModelState.IsValid)
        {
            _product.UpdateProduct(product);
            _product.EditMappingProductCategories(collection, product.ProductID);
            return RedirectToAction("ProductsList");
        }
        ViewBag.CompanyID = new SelectList(db.Companies, "CompanyID", "Name", product.CompanyID);
        ViewData["categories"] = _categories.GetAllCategories();
        return View(product);
    }
Run Code Online (Sandbox Code Playgroud)

我的服务层功能.我从表单收集新的类别,并根据结果我编辑产品.

public void EditMappingProductCategories(FormCollection collection , int pro) 
    {
        using (EFDbContext context = new EFDbContext())
        {
            List<Category> list = new List<Category>();
            Product product = …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc entity-framework asp.net-mvc-3

2
推荐指数
1
解决办法
3380
查看次数

InkCanvas上的MouseLeftButtonDown事件

嗨,我不知道为什么它不起作用.看起来我无法在InkCanvas上使用此事件.

XAML

<Window x:Class="PolyLine.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<StackPanel >
    <Button Name="Button1">Clear</Button>
    <InkCanvas x:Name="MC" MouseLeftButtonDown="MC_MouseLeftButtonDown" MouseRightButtonDown="MC_MouseRightButtonDown" MouseMove="MC_MouseMove" Background="White"  Height="300" Width="497" ></InkCanvas>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

代码背后

private void MC_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    polylinePoints.Add(e.GetPosition(MC));
}
Run Code Online (Sandbox Code Playgroud)

c# wpf inkcanvas

2
推荐指数
1
解决办法
1372
查看次数