Как настроить внешние ключи в таблице ассоциации в Entity Framework 4.2 - PullRequest
1 голос
/ 31 декабря 2011

Рассмотрим таблицу, определенную как:

    public class SkillInteraction
{
    // Primary Key
    [Key]
    public int SkillInteractionId { get; set; }

    // record type (offensive, defensive)
    public int SkillTypeId { get; set; }

    //foreign key to Skill table
    public int ParentSkillId { get; set; }

    //foreign key to Skill table
    [ForeignKey("ParentSkillId")]
    public virtual Skill ParentSkill { get; set; }

    //foreign key to Skill table
    public int SkillId { get; set; }

    // list of skills associated with the parent skill
    [ForeignKey("SkillId")]
    public virtual Skill Skill { get; set; }

    public decimal Ratio { get; set; }
}    
public class Skill
    {
        public int SkillId { get; set; }
        // record type (offensive, defensive)
        public int SkillTypeId { get; set; }
        public string SkillName { get; set; }
    }

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

Introducing FOREIGN KEY constraint 'SkillInteraction_Skill' on table 'SkillInteractions' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
Could not create constraint. See previous errors.

Итак, как мне установить эти отношения в EF 4.2, чтобы SQL-сервер не жаловался?

1 Ответ

1 голос
/ 31 декабря 2011

вам нужно указать отношение через свободный API, по умолчанию ef включит опцию WillCascadeOnDelete, вам нужно отключить ее. Это невозможно сделать с помощью аннотаций.

Я написал об этом в своем блоге http://2guysfrommumbai.wordpress.com/2011/10/26/entity-framework-4-1-associations/. Надеюсь, это поможет.

...