C # Entity Framework Invalid object name 'sys.default_constraints'

1

In my project in C # MVC 5 with Entity Framework next to a SQL Server Server, among a series of classes, I have a class called ctmdMandados.cs:

public class ctmdMandados
{
    //cadastro dos mandados recebidos e seus status
    public int Id { get; set; }

    //outras propriedades

    public virtual int TipoDocID { get; set; }
    public virtual ctmdTipoDoc TipoDoc { get; set; }


}

The Ddf-type variable was a local Enum with fixed values, and it was properly migrated in the Entity Framework. However, during the modeling, I decided to create a new class for the TypeDoc, with a new table, primary key, and everything. Before this change, the database was working normally, with no pending migration.

public class ctmdTipoDoc
{
    public int Id { get; set; }
    [StringLength(12)]
    public string TipoDoc { get; set; }

    public virtual IList<ctmdMandados> Mandados { get; set; }

}

And then I mapped it to DbContext:

public class AplicacoesContexto: DbContext
{
//outros mapeamentos
    public DbSet<ctmdTipoDoc> ctmdTipo { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
//outros modelbuilders
        var ctmdTipoBuilder = modelBuilder.Entity<ctmdTipoDoc>();
        ctmdTipoBuilder.ToTable("ctmdTipo");

        modelBuilder.Entity<ctmdTipoDoc>()
            .HasMany(ctmdTipo => ctmdTipo.Mandados)
            .WithRequired(ctmdMandados => ctmdMandados.TipoDoc);
}

Then, I ran the code to add a new migration, and the Entity Framework: created the following (I just pasted Up):

public partial class Atualiza : DbMigration
{
    public override void Up()
    {

        CreateTable(
            "dbo.ctmdTipo",
            c => new
                {
                    Id = c.Int(nullable: false, identity: true),
                    TipoDoc = c.String(maxLength: 12),
                })
            .PrimaryKey(t => t.Id);

        AddColumn("dbo.ctmdMandados", "TipoDocID", c => c.Int(nullable: false));
        CreateIndex("dbo.ctmdMandados", "TipoDocID");
        AddForeignKey("dbo.ctmdMandados", "TipoDocID", "dbo.ctmdTipo", "Id", cascadeDelete: true);
        DropColumn("dbo.ctmdMandados", "Tipo");
    }}

When you try to run the update-database, the Package Manager Console generates the Invalid object name 'sys.default.constraints' error:

Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
Applying explicit migrations: [201602252013494_Atualiza].
Applying explicit migration: 201602252013494_Atualiza.
System.Data.SqlClient.SqlException (0x80131904): Invalid object name 'sys.default_constraints'.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action'1 wrapCloseInAction)
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action'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.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout, Boolean asyncWrite)
   at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource'1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite)
   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.<NonQuery>b__0(DbCommand t, DbCommandInterceptionContext'1 c)
   at System.Data.Entity.Infrastructure.Interception.InternalDispatcher'1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func'3 operation, TInterceptionContext interceptionContext, Action'3 executing, Action'3 executed)
   at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.NonQuery(DbCommand command, DbCommandInterceptionContext interceptionContext)
   at System.Data.Entity.Internal.InterceptableDbCommand.ExecuteNonQuery()
   at System.Data.Entity.Migrations.DbMigrator.ExecuteSql(MigrationStatement migrationStatement, DbConnection connection, DbTransaction transaction, DbInterceptionContext interceptionContext)
   at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSql(MigrationStatement migrationStatement, DbConnection connection, DbTransaction transaction, DbInterceptionContext interceptionContext)
   at System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection connection, DbTransaction transaction, DbInterceptionContext interceptionContext)
   at System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinTransaction(IEnumerable'1 migrationStatements, DbTransaction transaction, DbInterceptionContext interceptionContext)
   at System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinNewTransaction(IEnumerable'1 migrationStatements, DbConnection connection, DbInterceptionContext interceptionContext)
   at System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection connection, DbInterceptionContext interceptionContext)
   at System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection connection)
   at System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClass30.<ExecuteStatements>b__2e()
   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.<>c__DisplayClass1.<Execute>b__0()
   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func'1 operation)
   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Action operation)
   at System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable'1 migrationStatements, DbTransaction existingTransaction)
   at System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable'1 migrationStatements)
   at System.Data.Entity.Migrations.Infrastructure.MigratorBase.ExecuteStatements(IEnumerable'1 migrationStatements)
   at System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(String migrationId, VersionedModel targetModel, IEnumerable'1 operations, IEnumerable'1 systemOperations, Boolean downgrading, Boolean auto)
   at System.Data.Entity.Migrations.DbMigrator.ApplyMigration(DbMigration migration, DbMigration lastMigration)
   at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ApplyMigration(DbMigration migration, DbMigration lastMigration)
   at System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable'1 pendingMigrations, String targetMigrationId, String lastMigrationId)
   at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable'1 pendingMigrations, String targetMigrationId, String lastMigrationId)
   at System.Data.Entity.Migrations.DbMigrator.UpdateInternal(String targetMigration)
   at System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClassc.<Update>b__b()
   at System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
   at System.Data.Entity.Migrations.Infrastructure.MigratorBase.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
   at System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration)
   at System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(String targetMigration)
   at System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.Run()
   at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
   at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
   at System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner runner)
   at System.Data.Entity.Migrations.Design.ToolingFacade.Update(String targetMigration, Boolean force)
   at System.Data.Entity.Migrations.UpdateDatabaseCommand.<>c__DisplayClass2.<.ctor>b__0()
   at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command)
ClientConnectionId:b0d48a01-5a3f-469d-bd07-70a280743ba9
Invalid object name 'sys.default_constraints'.

I searched the internet but found nothing definitive. I think it has to do with the standards with SQL Server, but I have no idea how to resolve it.

Thank you again for your attention!

    
asked by anonymous 25.02.2016 / 21:40

1 answer

0

There is nothing wrong with the Entity Framework. Only your login does not have permissions.

Check with the team responsible for the database if there is any DENY for the metadatabases or if the login does not have the public role set.

    
26.02.2016 / 16:42