Тип не был сопоставлен после попытки установки контроллера в браузере - PullRequest
1 голос
/ 10 января 2012

Я получаю сообщение об ошибке:

Тип 'GMS_Sandbox_MVC.Models.Organization' не был сопоставлен.Убедитесь, что тип не был явно исключен с помощью метода Ignore или аннотации данных NotMappedAttribute.Убедитесь, что тип был определен как класс, не является примитивным, вложенным или универсальным и не наследуется от EntityObject.Исходный файл: C: \ source temp \ GMS_Sandbox_MVC \ GMS_Sandbox_MVC \ Models \ OrganizationRepository.cs>> Строка: 14

Ошибка источника:

Line 12:     {
Line 13:        // GMSSandboxMVCContext context = new GMSSandboxMVCContext();
Line 14:          GMSSandboxMVCContext context = new GMSSandboxMVCContext();
Line 15: 
Line 16:         public IQueryable<Organization> All

У всех есть идеи, что можетбыть причиной этого?

В журнале ошибок указано:

Ошибка 12 Не удалось найти имя типа или пространства имен 'GMSSandboxMVCEntities' (отсутствует директива using или ссылка на сборку?) C: \ source temp \ GMS_Sandbox_MVC \ GMS_Sandbox_MVC \ Models \ OrganizationRepository.cs

OrganizationRepository.CS

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Linq.Expressions;
using System.Web;

namespace GMS_Sandbox_MVC.Models
{ 
public class OrganizationRepository : IOrganizationRepository
{
   // GMSSandboxMVCContext context = new GMSSandboxMVCContext();
     GMSSandboxMVCContext context = new GMSSandboxMVCContext();

    public IQueryable<Organization> All
    {
        get { return context.Organizations; }
    }

    public IQueryable<Organization> AllIncluding(params Expression<Func<Organization, object>>[] includeProperties)
    {
        IQueryable<Organization> query = context.Organizations;
        foreach (var includeProperty in includeProperties) {
            query = query.Include(includeProperty);
        }
        return query;
    }

    public Organization Find(string id)
    {
        return context.Organizations.Find(id);
    }

    public void InsertOrUpdate(Organization organization)
    {
        if (organization.org_nbr == default(string)) {
            // New entity
            context.Organizations.Add(organization);
        } else {
            // Existing entity
            context.Entry(organization).State = EntityState.Modified;
        }
    }

    public void Delete(string id)
    {
        var organization = context.Organizations.Find(id);
        context.Organizations.Remove(organization);
    }

    public void Save()
    {
        context.SaveChanges();
    }
}

public interface IOrganizationRepository
{
    IQueryable<Organization> All { get; }
    IQueryable<Organization> AllIncluding(params Expression<Func<Organization, object>>[] includeProperties);
    Organization Find(string id);
    void InsertOrUpdate(Organization organization);
    void Delete(string id);
    void Save();
}

} OrganizationController.CS

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using GMS_Sandbox_MVC.Models;

namespace GMS_Sandbox_MVC.Controllers
{   
    public class OrganizationController : Controller
    {
        private readonly IOrganizationRepository organizationRepository;

        // If you are using Dependency Injection, you can delete the following constructor
        public OrganizationController() : this(new OrganizationRepository())
        {
        }

        public OrganizationController(IOrganizationRepository organizationRepository)
        {
            this.organizationRepository = organizationRepository;
        }

        //
        // GET: /Organizations/

        public ViewResult Index()
        {
            return View(organizationRepository.AllIncluding(organization => organization.Assoc_Role, organization => organization.Grants, organization => organization.Distro_List));
        }

        //
        // GET: /Organizations/Details/5

        public ViewResult Details(string id)
        {
            return View(organizationRepository.Find(id));
        }

        //
        // GET: /Organizations/Create

        public ActionResult Create()
        {
            return View();
        } 

        //
        // POST: /Organizations/Create

        [HttpPost]
        public ActionResult Create(Organization organization)
        {
            if (ModelState.IsValid) {
                organizationRepository.InsertOrUpdate(organization);
                organizationRepository.Save();
                return RedirectToAction("Index");
            } else {
                return View();
            }
        }

        //
        // GET: /Organizations/Edit/5

        public ActionResult Edit(string id)
        {
             return View(organizationRepository.Find(id));
        }

        //
        // POST: /Organizations/Edit/5

        [HttpPost]
        public ActionResult Edit(Organization organization)
        {
            if (ModelState.IsValid) {
                organizationRepository.InsertOrUpdate(organization);
                organizationRepository.Save();
                return RedirectToAction("Index");
            } else {
                return View();
            }
        }

        //
        // GET: /Organizations/Delete/5

        public ActionResult Delete(string id)
        {
            return View(organizationRepository.Find(id));
        }

        //
        // POST: /Organizations/Delete/5

        [HttpPost, ActionName("Delete")]
        public ActionResult DeleteConfirmed(string id)
        {
            organizationRepository.Delete(id);
            organizationRepository.Save();

            return RedirectToAction("Index");
        }
    }
}

Я использую учебник с здесь

1 Ответ

0 голосов
/ 25 мая 2012

Я столкнулся почти с этим точным сценарием и не мог найти много указаний.В конце концов я обнаружил пару вещей, которые стоит попробовать, если кто-то еще находится в подобной ситуации:

  1. Удалите и заново создайте свой edmx - мне это не помогло, но стоило попробовать!
  2. Убедитесь, что у вас установлена ​​последняя версия EF - у меня были большие надежды на это, но все еще не повезло.
  3. http://jameschambers.com/blog/asp.net-mvcscaffolding-generates-extra-properties-in-views - У меня сейчас другая ошибка (возможно, из-за сложные ключи ) но я почти уверен, что это решило предыдущий!
...