1

Таким образом, я довольно новыми для MVC, и только начал после нескольких учебных пособий по DotNetCurry, более конкретно this one, но я столкнулся this problem that it's already answeredДобавление контроллера на MVC, различные типы объектов

Но ответ на него ISN» я работаю для меня. Вот контекст моего тестового проекта

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

namespace Sysbat.Models 
{ 
    public class SysbatContext : DbContext 
    { 
     public DbSet<Objeto> Objetos { get; set; } 
     public DbSet<Propiedad> Propeidades { get; set; } 
     public DbSet<ObjetoPropiedades> ObjetosPropiedades { get; set; } 
     public DbSet<ObjetoValores> ObjetosValores { get; set; } 
     public DbSet<PropiedadValores> PorpiedadesValores { get; set; } 

     public SysbatContext() : base("DevConn"){} 
    } 
} 

Любая идея, почему я также получаю Unable to cast object of type 'System.Data.Entity.Core.Objects.ObjectContext' to 'System.Data.Objects.ObjectContext' при добавлении элемента управления?

Я не хотел поднять мертвых, так как в прошлом году этот ответ был ром, вот почему я публикую новый вопрос.

Update 1:

После дальнейших исследований, я выяснил это, это не представляется возможным с помощью EF 6.1, который я, что я использовал, и это было либо обновление до Mvc 5 или более ранней версии EF 5. Учитывая, что я Я использую VS2010 (мой ноутбук не может обрабатывать VS2012 или новее, необходимо обновить, XD). MVC 5 не вариант, поэтому я удалил EF 6 и установил 5, теперь я получаю еще одну ошибку.

Unable to retrieve metadata for 'Sysbat.Models.Objeto'. 
Unrecognized element 'providers'. 

Вот класс «Objeto» Я пытаюсь создать элемент управления до

/// <summary> 
/// Class that hold the Objetos to be used in the system 
/// </summary> 
public class Objeto 
{ 
    [Key] 
    public int Oid { get; set; } 
    public string Nombre { get; set; } 
    public DateTime FechaCreacion { get; set; } 
} 
+0

Неинформирована мысль от того, кто делает рамки сущности и WPF; entityframework имеет свою концепцию контекста как соединение с информацией о состоянии базы данных DB. Пользовательский интерфейс UI имеет свою концепцию контекста как объекта, контроль которого привязан к базе данных. Они обычно не одно и то же; ваш слой модели должен переводить между ними. Поэтому вы не можете отбрасывать один на другой. –

ответ

1

Это может быть несколько разных вещей. Здесь действительно недостаточно информации для правильной диагностики.

Я обнаружил, что шаблон контроллера чрезвычайно тонкий в первую очередь. Иногда, если вы не восстановили определенную часть своего решения, это не удастся. Иногда это просто терпит неудачу без уважительной причины. И это в значительной степени только работает непосредственно с классами сущностей и DbContext. Если вы попытаетесь использовать модель представления или вы будете работать с чем-то вроде репозитория или службы, а не с DbContext, это не сработает.

Длинные и короткие, вы обнаружите, что по-прежнему используете MVC, что это гораздо больше проблем, чем того стоит. Я все еще использую «Add> Controller ...», но я просто выбираю «MVC 5 Controller - Empty» и сам настраиваю все.

Тем не менее, если вы все еще хотите полноценное функционирование контроллера и функции представления, лучше всего я могу порекомендовать сначала, очистить и перестроить ваше решение. Если он по-прежнему дает вам ошибки, закройте Visual Studio и затем снова откройте свое решение. Иногда этого достаточно, чтобы заставить его работать. Кроме того, убедитесь, что все ваши проекты в вашем решении используют одни и те же версии Entity Framework и MVC. Иногда может возникнуть странное поведение, если существует несоответствие версии между проектами, которые ссылаются друг на друга.

-2

Итак, я нашел ответ на этот вопрос последнего here и теперь я могу добавить контроллеры

Edit:

Как было предложено, я добавляю решение, которое я нашел в ссылке

В конце концов, проблема была связана с моей строкой соединения. В моем web.config был указан провайдер, который я не использовал, поэтому мне нужно было только удалить эту настройку, и все было хорошо!

До:

<entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> 
    <providers> 
    <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
    </providers> 
</entityFramework> 

После

<entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> 
</entityFramework> 
Смежные вопросы