Установка связи с внешним ключом для унаследованного объекта с использованием graphdiff и Entity Framework

1

У меня проблема с обновлением значения для внешнего ключа, который наследуется от другого класса. Я работаю с отдельным объектом в Entity Framework, поэтому я использую graphdiff для его обработки.

Я упростил код, чтобы было легче читать

Класс проекта:

public class Project
{
    public Guid Id { get; set; }

    public virtual List<Activity> Activities { get; set; }
}

Класс деятельности:

public class Activity
{
    public Guid Id { get; set; }

    public String Name { get; set; }

    public virtual Company Company { get; set; }
}

Класс SurfingActivity:

public class SurfingActivity : Activity
{
    public String Comment { get; set; }

    public virtual Weather Weather { get; set; }
}

Контекст обновления с использованием graphdiff:

public void UpdateActivity(Project project)
{
    this.UpdateGraph(project, map => map
        .OwnedCollection(p => p.Activities, with => with
            .AssociatedEntity(a => a.Company)
        )
    );
}

Я могу связать свойство Company в Activity, но не Weather of SurfingActivity. Когда я передаю значения для SurfingActivity, Id, Name, Company и Comment будут сохранены в таблице Activity и в таблице SurfingActivity, но не в погоде. Кто-нибудь имеет какое-либо предложение, как решить это, не создавая новое свойство в проекте, которое содержит список с surfingActivity

Теги:
entity-framework
ef-code-first
graphdiff

1 ответ

1
Лучший ответ

Я спросил andypelzer в GraphDiff, и это в настоящее время не поддерживается. Моя работа, которая будет работать в этом случае (но не в том случае, если сущности становятся еще более вложенными) заключается в добавлении свойства внешнего ключа в виде типа данных и аннотации данных ForeignKey к внешнему ключу с сущностью, например:

    public System.Guid? Weather_Id { get; set; }

    [ForeignKey("Weather_Id")]
    public virtual Weather Weather { get; set; }

Ссылка на вопрос: https://github.com/refactorthis/GraphDiff/issues/112

Ещё вопросы

Сообщество Overcoder
Наверх
Меню