visual tutorial studio net mvc framework first espaƱol con autenticacion asp visual-studio-2013 asp.net-mvc-5 sql-server-express entity-framework-6 localdb

visual-studio-2013 - tutorial - entity framework visual studio 2017



El error System.Data.DataException ocurriĆ³ en EntityFramework.dll (2)

Aquí EmployeeDetail es un nombre de tabla y Employee es un nombre de modelo. Y ID, Sucursal, Salario y UID son campos de tabla:

public ActionResult Index() { List<EmployeeDetail> employees = context.EmployeeDetails.ToList(); List<Employee> emp = new List<Employee>(); foreach(EmployeeDetail item in employees) { emp.Add(new Employee { ID=Convert.ToInt32(item.ID), Branch=item.Branch,`enter code here` Salary=Conve`enter code here`rt.ToInt32(item.Salary), UID = Convert.ToInt32(item.ID), }); } return View(emp); }

ver el código de la página

<div style="font-family:Arial"> <h2>Index</h2> <ul> @foreach (var emp in Model) { <li> @Html.ActionLink(emp.Branch, "Details", new { id = emp.ID }); </li> } </ul> </div>

He estado siguiendo este tutorial Comenzando con Entity Framework 6 Code First usando MVC 5 .

Cuando llegué a la sección donde necesito ejecutar el programa y hago clic en Estudiante para que el programa cree la base de datos obtengo el siguiente error.

System.Data.DataException no fue manejado por el código de usuario HResult = -2146233087 Mensaje = Ocurrió una excepción al inicializar la base de datos. Vea InnerException para más detalles. Fuente = EntityFramework StackTrace: en System.Data.Entity.Internal.InternalContext.PerformInitializationAction (Acción) en System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization () en System.Data.Entity.Internal.LazyInternalContext.b__4 (InternalContext c ) en System.Data.Entity.Internal.RetryAction 1.PerformAction(TInput input) at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action 1 acción) en System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase () en System.Data.Entity.Internal.InternalContext.Initialize () en System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType (Type entityType) en System.Data.Entity.Internal.Linq.InternalSet 1.Initialize() at System.Data.Entity.Internal.Linq.InternalSet 1.GetEnumerator () en System.Data.Entity.Infrastructure.DbQuery 1.System.Collections.Generic.IEnumerable<TResult>.GetEnumerator() at System.Collections.Generic.List 1 .. ctor ( 1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable IEnumerable 1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable 1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable fuente de 1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable 1) en ContosoUniversityFollow.Controllers.StudentController.Index () en c: / Users / Office / Documents / Visual Studio 2013 / Projects / ContosoUniversityFollow / ContosoUniversityFollow / Controllers / StudentController.cs: línea 21 en lambda_method (Closure, ControllerBase, Object []) en System.Web.Mvc.ActionMethodDispatcher.Execute (ControllerBase controller, Object [] parameters) en System.Web.Mvc.ReflectedActionDescriptor.Execute (ControllerContext controllerContext, IDictionary 2 parameters) at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary 2 parameters) en System.Web.Mvc.Async.AsyncControllerActionInvoker.ActionInvocation.InvokeSynchronousActionMethod () en System.Web.Mvc.Async.AsyncControllerActionInvoker.b__36 (IAsyncResult asyncResult, ActionInvocation innerInvokeState) en System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult 2.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase 2.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase 1.End () en System.Web.Mvc.Async.AsyncResultWrapper.End [TResult] (IAsyncResult asyncResult, etiqueta Object) en System.Web.Mvc.Async. . AsyncControllerActionInvoker.EndInvokeActionMethod (IAsyncResult asyncResult) en System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.b__3c () en System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters <> c__DisplayClass45.b__3e () InnerException: System.Data.Entity .Core.EntityException HResult = -2146233087 Mensaje = El proveedor subyacente falló en Abrir. Fuente = EntityFramework StackTrace: en System.Data.Entity.Core.EntityClient.EntityConnection.Open () en System.Data.Entity.Core.Objects.ObjectContext.EnsureConnection () en System.Data.Entity.Core.Objects.ObjectContext. ExecuteInTransaction [T] (Func 1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess) at System.Data.Entity.Core.Objects.ObjectQuery 1. <> C__DisplayClassb.b__9 () en System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy. Ejecute [TResult] ( 1 operation) at System.Data.Entity.Core.Objects.ObjectQuery Func 1 operation) at System.Data.Entity.Core.Objects.ObjectQuery 1.GetResults (Nullable 1 forMergeOption) at System.Data.Entity.Core.Objects.ObjectQuery 1..GetEnumerator> b__0 () en System.Lazy 1.CreateValue() at System.Lazy 1.LazyInitValue () en System.Lazy 1.get_Value() at System.Data.Entity.Internal.LazyEnumerator 1.MoveNext () en System.Linq.Enumerable.FirstOrDefault [ TSource] ( 1 source) at System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.<GetElementFunction>b__1[TResult](IEnumerable IEnumerable 1 source) at System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.<GetElementFunction>b__1[TResult](IEnumerable 1 source) at System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.<GetElementFunction>b__1[TResult](IEnumerable secuencia de 1 source) at System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.<GetElementFunction>b__1[TResult](IEnumerable 1) en System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.ExecuteSingle [TResult] ( 1 query, Expression queryRoot) at System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute[TResult](Expression expression) at System.Data.Entity.Internal.Linq.DbQueryProvider.Execute[TResult](Expression expression) at System.Linq.Queryable.FirstOrDefault[TSource](IQueryable IEnumerable 1 query, Expression queryRoot) at System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute[TResult](Expression expression) at System.Data.Entity.Internal.Linq.DbQueryProvider.Execute[TResult](Expression expression) at System.Linq.Queryable.FirstOrDefault[TSource](IQueryable 1 source) en System.Data.Entity.Internal.EdmMetadataRepository.QueryForModelHash (Func 2 createContext) at System.Data.Entity.Internal.InternalContext.QueryForModelHash() at System.Data.Entity.Internal.ModelCompatibilityChecker.CompatibleWithModel(InternalContext internalContext, ModelHashCalculator modelHashCalculator, Boolean throwIfNoMetadata) at System.Data.Entity.Internal.InternalContext.CompatibleWithModel(Boolean throwIfNoMetadata) at System.Data.Entity.Database.CompatibleWithModel(Boolean throwIfNoMetadata) at System.Data.Entity.DropCreateDatabaseIfModelChanges 2 createContext) at System.Data.Entity.Internal.InternalContext.QueryForModelHash() at System.Data.Entity.Internal.ModelCompatibilityChecker.CompatibleWithModel(InternalContext internalContext, ModelHashCalculator modelHashCalculator, Boolean throwIfNoMetadata) at System.Data.Entity.Internal.InternalContext.CompatibleWithModel(Boolean throwIfNoMetadata) at System.Data.Entity.Database.CompatibleWithModel(Boolean throwIfNoMetadata) at System.Data.Entity.DropCreateDatabaseIfModelChanges 1.InitializeDatabase (contexto TContext) en System.Data.Entity.Internal.InternalContext. <> C__DisplayClasse 1.<CreateInitializationAction>b__d() at System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action) InnerException: System.Data.SqlClient.SqlException HResult=-2146232060 Message=Cannot open database "ContosoUniversity1" requested by the login. The login failed. Login failed for user ''Office-PC/Office''. Source=.Net SqlClient Data Provider ErrorCode=-2146232060 Class=11 LineNumber=65536 Number=4060 Procedure="" Server=(LocalDb)/v11.0 State=1 StackTrace: at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource 1.<CreateInitializationAction>b__d() at System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action) InnerException: System.Data.SqlClient.SqlException HResult=-2146232060 Message=Cannot open database "ContosoUniversity1" requested by the login. The login failed. Login failed for user ''Office-PC/Office''. Source=.Net SqlClient Data Provider ErrorCode=-2146232060 Class=11 LineNumber=65536 Number=4060 Procedure="" Server=(LocalDb)/v11.0 State=1 StackTrace: at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource 1.<CreateInitializationAction>b__d() at System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action) InnerException: System.Data.SqlClient.SqlException HResult=-2146232060 Message=Cannot open database "ContosoUniversity1" requested by the login. The login failed. Login failed for user ''Office-PC/Office''. Source=.Net SqlClient Data Provider ErrorCode=-2146232060 Class=11 LineNumber=65536 Number=4060 Procedure="" Server=(LocalDb)/v11.0 State=1 StackTrace: at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource 1 reintento, DbConnectionOptions UserOptions, DbConnectionInternal y conexión) en System.Data.ProviderBase.DbConnectionFactory. TryGetConnection (DbConnection owningConnection, TaskCompletionSource 1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource retry 1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource 1 reintenta, DbConnection Opciones userOptions) en System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection (DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource 1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource 1 reintenta) en System.Data.SqlClient.SqlConnection .TryOpen (TaskCompletionSource 1 retry) at System.Data.SqlClient.SqlConnection.Open() at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.<>c__DisplayClass1.<Execute>b__0() at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func operación 1 retry) at System.Data.SqlClient.SqlConnection.Open() at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.<>c__DisplayClass1.<Execute>b__0() at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func 1) en System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute (operación de acción) en System.Data.Entity.Core.EntityClient.EntityConnection.Open () InnerException:

Me cuesta mucho intentar solucionar el problema. Sigo todo e incluso rehacerlo solo para asegurarme de que lo hice bien. No creo que me pierda ningún paso. Pero hay algo mal. Si ejecuto el código de muestra completo, todo funciona bien.

Cualquier ayuda es apreciada.

Gracias,

Pheap

EDITAR:

Fue realmente frustrante por una cosa simple que condujo a un error como este. @mmeasor, acabo de ver ese error también. No puede conectarse a la base de datos. Entonces eso me lleva a verificar la conexión.

Lo que pasó fue que al principio usé esta cadena de conexión:

Así que EntityFramework creó un archivo de base de datos ContosoUniversity1.mdf aquí como C: / Users / Office / ContosoUniversity1.mdf. Pero luego quiero que cree otro y usarlo en su lugar y esta vez quiero que esté en la carpeta del programa App_Data / en su lugar.

Así que modifiqué el archivo web.config a:

Pensé que si lo hago, EF creará una nueva base de datos para mí en la carpeta / App_Data / y vinculará eso en lugar de lo anterior en C: / Users / Office.

¡Estaba tan equivocado! eso fue cuando comencé a recibir el error publicado arriba. Y no puedo encontrar lo que causa el problema.

Con el segundo web.config, traté de copiar el archivo de la base de datos a la carpeta App_Data, pero eso aún no funciona.

Ahora uso la primera cadena de conexión y funciona bien.

Entonces, ahora la pregunta es: ¿Cómo hacer que el programa se vincule al archivo de la base de datos en la carpeta / App_Data / en su lugar?

Gracias,

Pheap


Tuve el mismo problema al tratar de cambiar la ubicación de la base de datos tutorial de la Universidad de Conosto desde la carpeta de usuario a la carpeta de aplicación_data. John Locke me introdujo en la idea de que puede tener algo que ver con tener que cambiar el nombre de la base de datos.

Cambiar ligeramente el nombre de la base de datos nombrada en el archivo web.config (Esto funciona de forma inconsistente, pero funciona de forma consistente inconsistente. Si tuviera que probar esto de nuevo ... y estoy seguro de que lo haré en algún momento ... Me mantendría alejado al reutilizar nombres, es decir, no alternar entre dos preferencias de nombre (p. ej. database1 y database2 a database1). Utilizaría nombres totalmente nuevos, p. ej. databse7 ... database8 ... database9 - obtendría un nombre distinto de los nombres utilizados anteriormente)

También tuve suerte, una vez que se creó una base de datos con el nombre que no quería, cambiando el nombre de la base de datos a lo que yo quería que fuera y haciendo coincidir ese nombre en web.config (es decir, pude crear una "base de datos3.mdf "archivo con éxito y luego lo cambié en el sistema operativo a lo que yo quería -" database1.mdf "y coincidía con el archivo web.config a database1 y se conectaba en el primer intento)