0
votes

I have a tutorial book that builds an MVC API app using code first. I want to use DB first. When I run the call to the api, it's telling me in the inner exception that it can't find "dbo.". I suspect that the .dbo is the problem and that if it was dropped (or if I pre-pended that somewhere) it would work, but I can't see where to alter the code to do that.

Here is the whole error I am getting, what I referred to up above is referenced in $id: "3"

$id: "1", Message: "An error has occurred.", ExceptionMessage: "The 'ObjectContent1' 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.ObjectQuery1.<>c__DisplayClass7.b__6() at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess) at System.Data.Entity.Core.Objects.ObjectQuery1.<>c__DisplayClass7.b__5() at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func1 operation) at System.Data.Entity.Core.Objects.ObjectQuery1.GetResults(Nullable1 forMergeOption) at System.Data.Entity.Core.Objects.ObjectQuery1..GetEnumerator>b__0() at System.Data.Entity.Internal.LazyEnumerator1.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, Action1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action1 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, TaskCompletionSource1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) at System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior) at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.b__c(DbCommand t, DbCommandInterceptionContext1 c) at System.Data.Entity.Infrastructure.Interception.InternalDispatcher1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func3 operation, TInterceptionContext interceptionContext, Action3 executing, Action`3 executed) at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext) at System.Data.Entity.Internal.InterceptableDbCommand.ExecuteDbDataReader(CommandBehavior behavior) at System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior) at System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)"

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; }
    }
}
1
Can you post the code you use to get this data from database using EntityFramework? Posting this ContactType and the generated code for your DbContext (specifically the part which deals with your ContactType entity) would also help.Alisson
I added the references to the original post at the bottomebick

1 Answers

0
votes

Please disregard, this was a stupid config string error.