从实体框架代码优先转到数据库优先时出错

本文关键字:数据库 出错 代码 实体 框架 | 更新日期: 2023-09-27 18:03:23

我有一本教程,它首先使用代码构建一个MVC API应用程序。我想先使用DB。当我运行对api的调用时,它在内部异常中告诉我,它找不到"dbo。"。我怀疑.dbo是问题所在,如果它被丢弃(或者如果我把它挂在某个地方(,它会起作用,但我不知道在哪里可以更改代码。

这是我得到的全部错误,我在上面提到的内容在$id:"3"中引用

$id:"1",消息:"发生错误。",ExceptionMessage:"'ObjectContent 1' type failed to serialize the response body for content type 'application/json; charset=utf-8'.", ExceptionType: "System.InvalidOperationException", StackTrace: null, InnerException: { $id: "2", Message: "An error has occurred.", ExceptionMessage: "An error occurred while executing the command definition. See the inner exception for details.", ExceptionType: "System.Data.Entity.Core.EntityCommandExecutionException", StackTrace: " at System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior) at System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlan.Execute[TResultType](ObjectContext context, ObjectParameterCollection parameterValues) at System.Data.Entity.Core.Objects.ObjectQuery 1.<>c_DisplayClass7.b__6((在系统数据实体果心对象。ObjectContext。ExecuteInTransaction[T](函数1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess) at System.Data.Entity.Core.Objects.ObjectQuery 1.<>c_DisplayClass7.b_5((在系统数据实体SqlServer。默认SqlExecutionStrategy。执行[TResult](函数1 operation) at System.Data.Entity.Core.Objects.ObjectQuery 1.GetResults(可为空的1 forMergeOption) at System.Data.Entity.Core.Objects.ObjectQuery 1..GetEnumerator>b_0((在系统中。数据实体内部的LazyEnumerator 1.MoveNext() at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeList(JsonWriter writer, IEnumerable values, JsonArrayContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty) at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue(JsonWriter writer, Object value, JsonContract valueContract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerProperty) at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter, Object value, Type objectType) at Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter, Object value, Type objectType) at System.Net.Http.Formatting.BaseJsonMediaTypeFormatter.WriteToStream(Type type, Object value, Stream writeStream, Encoding effectiveEncoding) at System.Net.Http.Formatting.JsonMediaTypeFormatter.WriteToStream(Type type, Object value, Stream writeStream, Encoding effectiveEncoding) at System.Net.Http.Formatting.BaseJsonMediaTypeFormatter.WriteToStream(Type type, Object value, Stream writeStream, HttpContent content) at System.Net.Http.Formatting.BaseJsonMediaTypeFormatter.WriteToStreamAsync(Type type, Object value, Stream writeStream, HttpContent content, TransportContext transportContext, CancellationToken cancellationToken) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.WebHost.HttpControllerHandler.<WriteBufferedResponseContentAsync>d__1b.MoveNext()", InnerException: { $id: "3", Message: "An error has occurred.", **ExceptionMessage: "Invalid object name 'dbo.ContactType'."**, ExceptionType: "System.Data.SqlClient.SqlException", StackTrace: " at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action 1 wrapCloseInAction(系统数据SqlClient。SqlInternalConnection。OnError(SqlException异常,布尔breakConnection,操作1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() at System.Data.SqlClient.SqlDataReader.get_MetaData() at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption) at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource 1完成,Int32超时,任务&任务布尔运算&usedCache、布尔异步写入、布尔inRetry(系统数据SqlClient。SqlCommand。RunExecuteReader(CommandBehaviorcmdBehavior,RunBehavior运行行为,布尔返回流,字符串方法(系统数据SqlClient。SqlCommand。ExecuteReader(命令行为行为,字符串方法(系统数据SqlClient。SqlCommand。ExecuteDbDataReader(命令行为行为(系统数据常见的DbCommand。ExecuteReader(CommandBehavior行为(在系统数据实体基础设施拦截。DbCommandDispatcher.b_c(DbCommandt、 DbCommandInterceptionContext 1 c) at System.Data.Entity.Infrastructure.Interception.InternalDispatcher 1.调度[TTarget,TInterceptionContext,TResult](TTargettarget,Func 3 operation, TInterceptionContext interceptionContext, Action 3正在执行,Action `3已执行(系统数据实体基础设施拦截。DbCommandDispatcher。读卡器(DbCommand命令,DbCommandInterceptionContext interceptionContext(系统数据实体内部的InterceptableDbCommand。ExecuteDbDataReader(命令行为行为(系统数据常见的DbCommand。ExecuteReader(CommandBehavior行为(在系统数据实体果心EntityClient。内部的EntityCommandDefinition。ExecuteStoreCommands(EntityCommandentityCommand,CommandBehavior行为(">

DBContext.edmx

<EntityType Name="ContactType">
  <Key>
    <PropertyRef Name="ID" />
  </Key>
  <Property Name="ID" Type="int" StoreGeneratedPattern="Identity" Nullable="false" />
  <Property Name="Description" Type="varchar" MaxLength="50" Nullable="false" />
</EntityType>

DBContext。上下文.cs

public virtual DbSet<ContactType> ContactType { get; set; }
public virtual int addContact(Nullable<int> contactTypeID, string emailAddress, string lastName, string firstName, string companyName, string phoneNumber1, string phoneNumber2, string comment)
{
    var contactTypeIDParameter = contactTypeID.HasValue ?
        new ObjectParameter("ContactTypeID", contactTypeID) :
        new ObjectParameter("ContactTypeID", typeof(int));
    var emailAddressParameter = emailAddress != null ?
        new ObjectParameter("EmailAddress", emailAddress) :
        new ObjectParameter("EmailAddress", typeof(string));
    var lastNameParameter = lastName != null ?
        new ObjectParameter("LastName", lastName) :
        new ObjectParameter("LastName", typeof(string));
    var firstNameParameter = firstName != null ?
        new ObjectParameter("FirstName", firstName) :
        new ObjectParameter("FirstName", typeof(string));
    var companyNameParameter = companyName != null ?
        new ObjectParameter("CompanyName", companyName) :
        new ObjectParameter("CompanyName", typeof(string));
    var phoneNumber1Parameter = phoneNumber1 != null ?
        new ObjectParameter("PhoneNumber1", phoneNumber1) :
        new ObjectParameter("PhoneNumber1", typeof(string));
    var phoneNumber2Parameter = phoneNumber2 != null ?
        new ObjectParameter("PhoneNumber2", phoneNumber2) :
        new ObjectParameter("PhoneNumber2", typeof(string));
    var commentParameter = comment != null ?
        new ObjectParameter("Comment", comment) :
        new ObjectParameter("Comment", typeof(string));
    return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("addContact", contactTypeIDParameter, emailAddressParameter, lastNameParameter, firstNameParameter, companyNameParameter, phoneNumber1Parameter, phoneNumber2Parameter, commentParameter);
}

ContactType.cs

namespace AHT.Data
{
    using System;
    using System.Collections.Generic;
    public partial class ContactType
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
        public ContactType()
        {
            this.Contact = new HashSet<Contact>();
        }
        public int ID { get; set; }
        public string Description { get; set; }
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<Contact> Contact { get; set; }
    }
}

从实体框架代码优先转到数据库优先时出错

请忽略,这是一个愚蠢的配置字符串错误。