Ошибка с Entity Framework 4 и MVC 3 - PullRequest
       1

Ошибка с Entity Framework 4 и MVC 3

0 голосов
/ 27 сентября 2011

У меня есть база данных с 3 таблицами:

  • Темы
  • Участники
  • Темы

Затем я добавил строку подключенияна web.config и создал EF со следующими классами:

namespace MySite.Models
{
    public class MySiteDBModel : DbContext
    {
        public DbSet<Topic> Topics { get; set; }
        public DbSet<Subject> Subjects { get; set; }
        public DbSet<Member> Members { get; set; }
        public DbSet<TopicDataModel> TopicDataModel { get; set; }
        protected override void OnModelCreating(DbModelBuilder mb)
        {
            mb.Conventions.Remove<PluralizingTableNameConvention>();            
        }
    }

    public class Topic
    {
        [Key]
        public int TopicID { get; set; }
        public int SubID { get; set; }
        public int MemberID { get; set; }
        public string TDate { get; set; }
        public string Title { get; set; }
        public string FileName { get; set; }
        public int Displays { get; set; }
        public string Description { get; set; }
        public virtual Subject Subject { get; set; }
        public virtual Member Member { get; set; }
        public virtual ICollection<TopicView> TopicView { get; set; }
    }
    public class Subject
    {
        [Key]
        public int SubID { get; set; }
        public string SubName { get; set; }
        public virtual ICollection<Topic> Topic { get; set; }
    }

    public class Member
    {
        [Key]
        public int MemberID { get; set; }
        public string FLName { get; set; }
        public string Email { get; set; }
        public string Pwd { get; set; }
        public string About { get; set; }
        public string Photo { get; set; }
        public virtual ICollection<Topic> Topic { get; set; }
    }

    public class TopicDataModel
    {
        [Key]
        public int TopicID { get; set; }
        public string SubName { get; set; }
        public string FLName { get; set; }
        public string TDate { get; set; }
        public string Title { get; set; }
        public int Displays { get; set; }
        public string Description { get; set; }
    }
}

Теперь, когда я пытаюсь запросить базу данных с этим кодом:

public ActionResult Index()
        {
            var topics = from t in db.Topics
                         join s in db.Subjects on t.SubID equals s.SubID
                         join m in db.Members on t.MemberID equals m.MemberID
                         select new TopicDataModel()
                         {
                             TopicID = t.TopicID,
                             SubName = s.SubName,
                             FLName = m.FLName,
                             TDate = t.TDate,
                             Title = t.Title,
                             Displays = t.Displays,
                             Description = t.Description
                         };
            return View(topics.ToList());
        } 

Я получил эту ошибку:

Модель, поддерживающая контекст MySiteDBModel, изменилась с момента создания базы данных.Либо удалите / обновите базу данных вручную, либо вызовите Database.SetInitializer с экземпляром IDatabaseInitializer.Например, стратегия DropCreateDatabaseIfModelChanges автоматически удалит и заново создаст базу данных и при необходимости заполнит ее новыми данными.

Пожалуйста, помогите мне !!!!!!

1 Ответ

1 голос
/ 27 сентября 2011

Вам необходимо установить некоторые элементы управления тем, как EF обрабатывает изменения в вашей модели данных. У Джули Лерман есть хороший пост в блоге Полное отключение инициализации базы данных кода .

Также, вот хороший обзор - Инициализация базы данных внутри кода

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...