У меня возникают проблемы с настройкой модели Entity Framework 4.
Объект контакта отображается в базе данных как обновляемое представление. Кроме того, из-за истории базы данных этот вид контакта имеет два разных ключа: один из старой системы. Поэтому некоторые другие таблицы ссылаются на контакт с "ContactID", в то время как другие более старые таблицы ссылаются на него с "LegacyContactID".
Поскольку это представление, в базе данных нет внешних ключей, и я пытаюсь вручную добавлять ассоциации в конструктор. Но свободные ассоциации, похоже, не дают способа указать, к какому полю относятся.
Как мне создать эту модель?
public class vwContact
{
public int KeyField { get; set; }
public string LegacyKeyField { get; set; }
}
public class SomeObject
{
public virtual vwContact Contact { get; set; }
public int ContactId { get; set; } //references vwContact.KeyField
}
public class LegacyObject
{
public virtual vwContact Contact { get; set; }
public string ContactId { get; set; } //references vwContact.LegacyKeyField
}
ModelCreatingFunction(modelBuilder)
{
// can't set both of these, right?
modelBuilder.Entity<vwContact>().HasKey(x => x.KeyField);
modelBuilder.Entity<vwContact>().HasKey(x => x.LegacyKeyField);
modelBuilder.Entity<LegacyObject>().HasRequired(x => x.Contact).???
//is there some way to say which key field this reference is referencing?
}