Миграция структуры сущности - Заявление об изменении таблицы в конфликте с ограничением внешнего ключаC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Миграция структуры сущности - Заявление об изменении таблицы в конфликте с ограничением внешнего ключа

Сообщение Anonymous »

Я создаю своего рода блог со структурой C# /. Net 4.5 с использованием миграций EF-кода-первого. Название, некоторый контент, дата, которую он был создан, и жанр и тип истории. < /p>

public class Story
{
public int Id { get; set; }

public string AuthorId { get; set; }
public virtual ApplicationUser Author { get; set; }

[Required]
[StringLength(50)]
public string Title { get; set; }

[Required]
[MinLength(100), MaxLength(5000)]
public string Content { get; set; }

[Required]
public int GenreId { get; set; }
public Genre Genre { get; set; }

[Required]
public int StoryTypeId { get; set; }
public StoryType StoryType { get; set; }

public DateTime CreatedAt { get; set; }
}
< /code>

Я добавил Storytypes в качестве свойства в историю. Ссылки Storytype на модель Storytype: < /p>

public class StoryType
{
public int Id { get; set; }
public string Name { get; set; }
}
< /code>

Я позаботился о том, чтобы добавить свой DBSET в мое приложение DB Context: < /p>

public DbSet Genres { get; set; }
public DbSet Stories { get; set; }
public DbSet StoryTypes { get; set; }
< /code>

Я в значительной степени выполнял те же шаги, которые я использовал, чтобы создать отношения между историей и жанром (что работало нормально). Прежде чем я начну создавать контроллеры Storytype, я зашел в Package-Console и запустил: < /p>

add-migration
< /code>

, который вернулся: < /p>

public partial class CreateTypeTable : DbMigration
{
public override void Up()
{
CreateTable(
"dbo.StoryTypes",
c => new
{
Id = c.Int(nullable: false, identity: true),
Name = c.String(),
})
.PrimaryKey(t => t.Id);

AddColumn("dbo.Stories", "StoryTypeId", c => c.Int(nullable: false));
CreateIndex("dbo.Stories", "StoryTypeId");
AddForeignKey("dbo.Stories", "StoryTypeId", "dbo.StoryTypes", "Id", cascadeDelete: true);
}

public override void Down()
{
DropForeignKey("dbo.Stories", "StoryTypeId", "dbo.StoryTypes");
DropIndex("dbo.Stories", new[] { "StoryTypeId" });
DropColumn("dbo.Stories", "StoryTypeId");
DropTable("dbo.StoryTypes");
}
}
< /code>

Смотрите на него, я не видел проблемы, а затем запустил: < /p>

update-database
< /code>

in package-console. < /p>

, который вернулся: < /p>

Error Number:547,State:0,Class:16
The ALTER TABLE statement conflicted with the FOREIGN KEY constraint "FK_dbo.Stories_dbo.StoryTypes_StoryTypeId". The conflict occurred in database "aspnet-HiRatik.Stories-20180724043630", table "dbo.StoryTypes", column 'Id'.
< /code>

Я не уверен, что здесь пошло не так. Я сделал тот же процесс с жанровыми отношениями, и это сработало. Я не видел разницы в двух.

Подробнее здесь: https://stackoverflow.com/questions/515 ... eign-key-c
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»