Ответ 1
Нет такого эквивалента. Вы должны использовать свободный API для удаления выборок каскада выборочно или вы должны удалить соглашение OneToManyCascadeDelete
, чтобы удалить его по всему миру.
В настоящее время я использую EF Code First 4.3 с включенными миграциями, но автоматические миграции отключены.
Мой вопрос прост, есть ли аннотации данных, эквивалентные конфигурации модели .WillCascadeOnDelete(false)
Я хотел бы украсить свой класс, чтобы отношения внешнего ключа НЕ запускали каскадное удаление.
Пример кода:
public class Container
{
public int ContainerID { get; set; }
public string Name { get; set; }
public virtual ICollection<Output> Outputs { get; set; }
}
public class Output
{
public int ContainerID { get; set; }
public virtual Container Container { get; set; }
public int OutputTypeID { get; set; }
public virtual OutputType OutputType { get; set; }
public int Quantity { get; set; }
}
public class OutputType
{
public int OutputTypeID { get; set; }
public string Name { get; set; }
}
Я хотел бы сделать что-то вроде этого:
public class Output
{
[CascadeOnDelete(false)]
public int ContainerID { get; set; }
public virtual Container Container { get; set; }
[CascadeOnDelete(false)]
public int OutputTypeID { get; set; }
public virtual OutputType OutputType { get; set; }
public int Quantity { get; set; }
}
Таким образом, я смогу правильно смоделировать миграцию. который закроет отношения внешнего ключа, которые будут каскадом удалены в данный момент.
Любые идеи, кроме использования конфигурации модели?
Нет такого эквивалента. Вы должны использовать свободный API для удаления выборок каскада выборочно или вы должны удалить соглашение OneToManyCascadeDelete
, чтобы удалить его по всему миру.
Создайте класс сопоставления (свободный синтаксис) и используйте следующий код:
// add relationships "Post" and "User" to a "Comment" entity
this.HasRequired(t => t.Post)
.WithMany(t => t.Comments)
.HasForeignKey(d => d.PostID)
.WillCascadeOnDelete(false); // <---
this.HasOptional(t => t.User)
.WithMany(t => t.Comments)
.HasForeignKey(d => d.UserID)
.WillCascadeOnDelete(false); // <---
Здесь хороший пост о том, как настроить плавные сопоставления, если вам нужна дополнительная информация.