English 中文(简体)
MVC3 采用实体框架的约束性nes式模型,有GUID钥匙
原标题:MVC3 binding nested model using Entity Framework with GUID keys

我每天都在战斗,我仍然失败。

I can simplify the problem as follows: I have reports and reports have forms. I have entity models of each. They have Guid id s as shown below.

“Model”/

我正试图提出一个看法,我可以在报告中提出一份报告和表格。 作为最终目标,我希望能够增加多种形式,但只有一种。 我的控制者如下:

    // GET: /AllInOne/Create

    public ActionResult Create()
    {
        ViewBag.PossibleReportBases = reportBaseRepository.All;
        ViewBag.PossibleCategories = categoryRepository.All;

        var model = new Report {FromDate = DateTime.Now};
        model.Forms.Add(new Form());
        return View(model);
    }

    // POST: /AllInOne/Create

    [HttpPost]
    public ActionResult Create(Report report)
    {
        if (ModelState.IsValid) {
            reportRepository.InsertOrUpdate(report);
            reportRepository.Save();
            return RedirectToAction("Index");
        }
        else
        {
            ViewBag.PossibleReportBases = reportBaseRepository.All;
            ViewBag.PossibleCategories = categoryRepository.All;
            return View();
        }
    }

保管人守则认为:

    public void InsertOrUpdate(Report report)
    {
        if (report.Id == default(System.Guid)) {
            // New entity
            report.Id = Guid.NewGuid();
            context.Reports.AddObject(report);
        } else {
            // Existing entity
            context.Reports.Attach(report);
            context.ObjectStateManager.ChangeObjectState(report, EntityState.Modified);
        }
    }

At one stage the binding was giving me this error: The EntityCollection has already been initialized. The InitializeRelatedCollection method should only be called to initialize a new EntityCollection during deserialization of an object graph.

我为这些看法做了很多尝试,但其中没有任何工作。

请提供帮助。

最佳回答

i 坚决认为你需要随附。 如果你从你的角度选择报告,报告就已经跟踪。 您可以简化您的存放地。

   public void InsertOrUpdate(Report report)
    {
        // i prefer Guid.Empty but no big deal
        if (report.Id == default(System.Guid)) {
            // New entity
            report.Id = Guid.NewGuid();
            context.Reports.AddObject(report);
        } 
        context.SaveChanges();
    }
问题回答

暂无回答




相关问题
Entity Framework with MySQL connector in c#

I have been trying to get the Entity Framework to work in my web application using MySQL. It works fine on my local pc, but doesn t work when I put it on the server. Since the server is a shared ...

How Do I Create And Update A Many To Many Relationship With EF

I am using the Entity Framework with SQL Server. I have a many to many relationship between 2 tables. I have created a join table with just the primary key fields of the 2 tables. In the designer, the ...

Entity Framework with File-Based Database

I am in the process of developing a desktop application that needs a database. The application is currently targeted to SQL Express 2005 and works wonderfully. However, I m not crazy about having ...

Linq to enties, insert foreign keys

I am using the ADO entity framework for the first time and am not sure of the best way of inserting db recored that contain foreign keys. this is the code that i am using, I would appreciate any ...

Entity Framework - Many to many question

I have a table called ASB and a table called PeopleInvolved. There is a junction table called PeopleInvolved_ASB which simply contains an ASBID and a PeopleInvolvedID column. The columns act as a ...

Post back complex object from client side

I m using ASP.NET MVC and Entity Framework. I m going to pass a complex entity to the client side and allow the user to modify it, and post it back to the controller. But I don t know how to do that ...

ADO.NET Entity Data Model are not precise enough

I run this code: var cos = from k in _db.klienci_do_trasy where k.klient_id == 5 select k; but the query send to database is: SELECT * FROM `klienci_do_trasy` LIMIT 0, 30 why is it for, there ...

热门标签