Application can't scaffold items

后端 未结 29 1045
自闭症患者
自闭症患者 2020-11-30 01:57

I created an MVC 5 application in VS 2013 Professional and then used EF 6.1 code first with an existing DB on SQL Server Express. When I try to create the views I’m using th

相关标签:
29条回答
  • 2020-11-30 02:25

    I tried most of the above without luck.

    What finally worked was:

    1. Delete the previously dynamically created string entry
    2. Delete my model (keeping all controllers and views)
    3. Recreate the ADO.NET Entity Data Model - using the same name, creating a new connection string entry with the same name as before

    Then everything worked again, minus 3 hours of development time.

    1. re-add (from a backup) all of my property attributes to the table/entity classes

    Seems to have something to do with the dynamically created connection string and the model. Would appreciate any thoughts on what could have happened.

    0 讨论(0)
  • 2020-11-30 02:26

    It seems a problem of connecting setting / inconsistent entry in via Web.config. To fix this issue , follow below steps:

    Remove connection related information (staring with <connectionStrings> from Web.config and remove models generated so far.

    Now generate the model and it will add fresh connection entry in Web.config file. Once model is generated, build the solution then start doing Scaffolding controlled. it will work.

    0 讨论(0)
  • 2020-11-30 02:26

    Your context class might be throwing an exception.

    I was following along in the book "C# 6.0 and the .NET 4.6 Framework" and one of the last exercises of the data access layer section was to add logging. Well, I guess that blows up the scaffold wizard. Probably file permissions on sqllog.txt or HttpRuntime is not defined...who knows. When I commented all this stuff out, it worked again.

    namespace AutoLotDAL.EF
    {
        using System.Data.Entity;
        using System.Data.Entity.Infrastructure;
        using System.Data.Entity.Infrastructure.Interception;
        using AutoLotDAL.Interception;
        using AutoLotDAL.Models;
        using System;
        using System.Data.Entity.Core.Objects;
        using System.Web;
    
        public class AutoLotEntities : DbContext
        {
            //static readonly DatabaseLogger databaseLogger =
            //    new DatabaseLogger($"{HttpRuntime.AppDomainAppPath}/sqllog.txt", true);
    
            public AutoLotEntities()
                : base("name=AutoLotConnection")
            {
                ////DbInterception.Add(new ConsoleWriterInterceptor());
                //databaseLogger.StartLogging();
                //DbInterception.Add(databaseLogger);
    
                //// Interceptor code
                //var context = (this as IObjectContextAdapter).ObjectContext;
                //context.ObjectMaterialized += OnObjectMaterialized;
                //context.SavingChanges += OnSavingChanges;
            }
    
            //void OnObjectMaterialized(object sender,
            //    System.Data.Entity.Core.Objects.ObjectMaterializedEventArgs e)
            //{
    
            //}
    
            //void OnSavingChanges(object sender, EventArgs eventArgs)
            //{
            //    // Sender is of type ObjectContext.  Can get current and original values,
            //    // and cancel/modify the save operation as desired.
            //    var context = sender as ObjectContext;
            //    if (context == null)
            //        return;
            //    foreach (ObjectStateEntry item in
            //        context.ObjectStateManager.GetObjectStateEntries(
            //            EntityState.Modified | EntityState.Added))
            //    {
            //        // Do something important here
            //        if ((item.Entity as Inventory) != null)
            //        {
            //            var entity = (Inventory)item.Entity;
            //            if (entity.Color == "Red")
            //            {
            //                item.RejectPropertyChanges(nameof(entity.Color));
            //            }
            //        }
            //    }
            //}
    
            //protected override void Dispose(bool disposing)
            //{
            //    DbInterception.Remove(databaseLogger);
            //    databaseLogger.StopLogging();
            //    base.Dispose(disposing);
            //}
    
            public virtual DbSet<CreditRisk> CreditRisks { get; set; }
            public virtual DbSet<Customer> Customers { get; set; }
            public virtual DbSet<Inventory> Inventory { get; set; }
            public virtual DbSet<Order> Orders { get; set; }
        }
    }
    
    0 讨论(0)
  • 2020-11-30 02:28

    Late reply; but, I am posting this answers with the hope that somebody can use this answer to solve their problem.

    For some reason, if your program CANNOT read connectionString information (either from web.config or from other means) then, this error will be thrown.

    Make sure that valid connectionString information is being retrieved properly without any problem.

    0 讨论(0)
  • 2020-11-30 02:28

    everyone. I know I'm a little late, but I think that is still valid to share my experience with this problem.

    I faced this message in two projects and in both cases the problem was with the connection string.

    In the first case it was "InitialCatalog" instead of "Initial Catalog" (separated).

    In the second case the server name (Data Source param) was wrong.

    I hope it helps.

    Best regards.

    0 讨论(0)
提交回复
热议问题