У меня проблема с обновлением значения для внешнего ключа, который наследуется от другого класса. Я работаю с отдельным объектом в 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
Я спросил 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