2016-08-22 118 views
0

我有一本教程書,首先使用代碼構建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() 在 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__DisplayClass7.b__5() 在 System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute [TResult](Func 1 operation) at System.Data.Entity.Core.Objects.ObjectQuery 1.GetRes ULTS(可空1 forMergeOption) at System.Data.Entity.Core.Objects.ObjectQuery 1..GetEnumerator> b__0() 在System.Data.Entity.Internal.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)在 System.Data.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,布爾asyncWrite,布爾inRetry)在 System.Data.SqlClient.SqlCommand.RunExecuteReader(的CommandBehavior cmdBehavior,RunBehavior runBehavior,布爾returnStream,字符串 方法)在 System.Data .SqlClient.SqlCommand.ExecuteReader(CommandBehavior 行爲,字符串方法)在 System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(的CommandBehavior 行爲)在 System.Data.Common.DbCommand.ExecuteReader(的CommandBehavior行爲) 在 System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.b__c(的DbCommand 噸,DbCommandInterceptionContext 1 c) at System.Data.Entity.Infrastructure.Interception.InternalDispatcher 1.Dispatch [t目標,TInterceptionContext,TResult](t目標 目標,函數功能3 operation, TInterceptionContext interceptionContext, Action 3執行時,執行Action`3)在 System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(的DbCommand 命令,DbCommandInterceptionContext interceptionContext )at System.Data.Entity.Internal.InterceptableDbCommand.ExecuteDbDataReader(CommandBehavior 行爲)在 System.Data.Common.DbCommand.ExecuteReader(的CommandBehavior行爲) 在 System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand,的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.Context.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; } 
    } 
} 
+0

你可以發佈你使用EntityFramework從數據庫中獲取這些數據的代碼嗎?發佈此'ContactType'併爲您的DbContext生成的代碼(特別是部分,它與你的'ContactType'實體交易)也會有所幫助。 – Alisson

+0

我添加到原帖引用底部 – ebick

回答

0

請忽略,這是一個愚蠢的配置字符串錯誤。

+0

您可以刪除你的問題。 – Igor

相關問題