简体   繁体   中英

Error with Entity Framework 4 and MVC 3

I have a database with 3 tables:

  • Subjects
  • Members
  • Topics

Then I added the connection string to web.config and created an EF with the following classes:

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; }
    }
}

Now when I am trying to query the database with the this code:

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());
        } 

I got this Error:

The model backing the 'MySiteDBModel' context has changed since the database was created. Either manually delete/update the database, or call Database.SetInitializer with an IDatabaseInitializer instance. For example, the DropCreateDatabaseIfModelChanges strategy will automatically delete and recreate the database, and optionally seed it with new data.

Please help me!!!!!!

You need to set some controls on how EF is handling changes to your data model. Julie Lerman has a good blog post on Turning Off Code First Database Initialization Completely .

Also, here is a good overview - Inside Code First Database Initialization

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM