Вот моя ситуация:
public abstract class Article
{
[key]
public Guid Guid { get; set;}
public string Name { get; set;}
.
.
.
}
public class Download : Article
{
...
}
public abstract class Category : Article
{
...
}
public class DownloadCategory : Category
{
....
}
И тогда у меня должно быть отношение "многие ко многим" между Download и DownloadCategory
следующим образом:
public class DownloadInCategory
{
[Key, Column(Order = 1), Required]
[ForeignKey("Download")]
Public Guid DownloadGuid { get; set; }
Public Download Download { get; set; }
[Key, Column(Order = 2), Required]
[ForeignKey("Category")]
Public Guid CategoryGuid { get; set; }
Public DownloadCategory Category { get; set; }
}
Когда я вызываю Add-Migration
, созданная миграция для объекта DownloadInCategory
:
CreateTable("dbo.DownloadInCategories",
c => new
{
CategoryGuid = c.Guid(nullable: false),
DownloadGuid = c.Guid(nullable: false),
})
.PrimaryKey(t => new { t.CategoryGuid, t.DownloadGuid })
.ForeignKey("dbo.DownloadCategories", t => t.CategoryGuid)
.ForeignKey("dbo.Downloads", t => t.DownloadGuid, cascadeDelete: true)
.Index(t => t.CategoryGuid)
.Index(t => t.DownloadGuid);
Вот мой вопрос:
Как вы заметили, это не добавление cascadeDelete: true
к одному из внешних ключей. ПОЧЕМУ?????!!!!!!
Я должен упомянуть, что я не изменил никаких соглашений modelbuilder
.
Таким образом, эта схема должна добавить Casscade в delete при миграции. Мои свойства [Required]
.
Что я делаю неправильно?
Спасибо, ребята...
Обновление:
Обратите внимание, что классы Article
и Category
abstract
.
Я изменил классы выше
Обновление 2: В этой схеме нет логической проблемы. Если я вручную отредактирую миграцию, он будет нормально обновлять базу данных.
Обновление 3:
Моя методология наследования EF TPC
Обновление 4:
После некоторых исследований и тестов Кажется, проблема наследуется от Category
.
Когда DownloadCategory
Унаследовано от Category
, Cascade не развертывается. но когда я наследую DownloadCategory
непосредственно из статьи, развертывается Cascade.
Но почему снова?