Avatar
Petr Čech (czubehead):

Ahoj, už mnohokrát jsem narazil na problém, že se migrace zasekne buď hned po

Add-Migration MyMigration

nebo při

Update-Database

.
To jsem už tak nějak vyřešil, ale stejně se mi to zdá 1. neuvěřitelně neohrabané, 2. občas je docela problém, když se to někde v půlce zasekne. To ale není na co se ptám :D problém je v tom, že tenhle kód

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace Blog.Models
{
    public class Article
    {
        [Key]
        [Required]
        [Display(Name = "url")]
        public string Url { get; set; }

        [Required(ErrorMessage = "Je nutné zadat kategorii")]
        [MaxLength(25)]
        [Display(Name = "kategorie")]
        public string Category { get; set; }

        [Required(ErrorMessage = "je nutná barva")]
        [StringLength(6)]
        [Display(Name = "barva kategorie")]
        public string CategoryColor { get; set; }

        [Required(ErrorMessage = "Je nutné zadat název")]
        [MaxLength(100)]
        [Display(Name = "název")]
        public string Title { get; set; }

        [Required(AllowEmptyStrings = true)]
        public DateTime Released { get; set; }

        [Required(ErrorMessage = "je nutné zadat popisek")]
        [Display(Name = "popisek")]
        [MaxLength(500)]
        public string Description { get; set; }

        [AllowHtml]
        [Required(ErrorMessage = "je nutné napsat článek")]
        [Display(Name = "článek")]
        [MinLength(100)]
        public string Content { get; set; }

        public Article()
        {
            Released = DateTime.Today;
        }
    }
}

se chová tak, že se nenechá uložit, prostě vypíše error message jako že jsem to nezadal i když to zadám.
Má někdo ponětí, jak to vyřešit?

Odpovědět 19.5.2014 21:51
Why so serious? -Joker
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Petr Čech (czubehead)
Jan Vargovský:

Odpíchni se od té chyby, určitě ti napíše přesně co jsi nezadal :)

 
Nahoru Odpovědět 19.5.2014 22:00
Avatar
Petr Čech (czubehead):

Je to ještě o něco horší, ty data se posílají, ale ignoruje je to a dělá jako že tam nejsou. Konkrétně se jedná o vlastnosti Category a CategoryColor. o_O

Nahoru Odpovědět 19.5.2014 22:04
Why so serious? -Joker
Avatar
Odpovídá na Petr Čech (czubehead)
Michal Štěpánek:

A máš v té tabulce Article nějaké ID, podle kterého by se záznamy určovaly?
Category se píše ručně název? proč to tam je?

Nahoru Odpovědět 20.5.2014 10:58
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Michal Štěpánek
Petr Čech (czubehead):

Jako ID používám Url, ale teď to dokonce nejde updatnout- píše(na update-database)

PM> Add-Migration add
Scaffolding migration 'add'.
The Designer Code for this migration file includes a snapshot of your current Code First model. This snapshot is used to calculate the changes to your model when you scaffold the next migration. If you make additional changes to your model that you want to include in this migration, then you can re-scaffold it by running 'Add-Migration add' again.
PM> Update-Database
Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
Applying explicit migrations: [201405200930516_add].
Applying explicit migration: 201405200930516_add.
System.Data.SqlClient.SqlException (0x80131904): The object 'DF__Articles__Color__48CFD27E' is dependent on column 'Color'.
ALTER TABLE ALTER COLUMN Color failed because one or more objects access this column.
   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(DbTransaction transaction, MigrationStatement migrationStatement, DbInterceptionContext interceptionContext)
   at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSql(DbTransaction transaction, MigrationStatement migrationStatement, DbInterceptionContext interceptionContext)
   at System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable`1 migrationStatements, DbTransaction transaction, 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, XDocument 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:300a0993-8a38-48ba-88f0-d4b262080afb
The object 'DF__Articles__Color__48CFD27E' is dependent on column 'Color'.
ALTER TABLE ALTER COLUMN Color failed because one or more objects access this column.
Nahoru Odpovědět 20.5.2014 11:34
Why so serious? -Joker
Avatar
Odpovídá na Petr Čech (czubehead)
Michal Štěpánek:

tady ti to píše, proč to neprovedl...

ALTER TABLE ALTER COLUMN Color failed because one or more objects access this column.

Nemůžeš měnit strukturu, resp. typ dat sloupce, když v něm máš data...

Editováno 21.5.2014 7:34
Nahoru Odpovědět 21.5.2014 7:33
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Michal Štěpánek
Petr Čech (czubehead):

To je právě ten problém, nenechá mě to (nebo to neumím) ty data odstranit a ta migrace se stejně někdy rozbije. :(

Nahoru Odpovědět 21.5.2014 20:51
Why so serious? -Joker
Avatar
Odpovídá na Petr Čech (czubehead)
Michal Štěpánek:

A ty máš v té tabulce nějaké cizí klíče z jiné tabulky? Která data tě to nechce nechat odstranit?

Nahoru Odpovědět 22.5.2014 7:37
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.