Мне было поручено перенести старое приложение в MVC 3, и я хочу сначала использовать код EF для репликации существующей схемы базы данных. Текущая кодовая база изобилует жестко закодированными командами SQL, и поэтому модель, которую я придумаю, должна быть «совместимой» с тем, что ожидает текущая система. Я знаю, что мог бы использовать базу данных EF First для этого, но существующая схема настолько проста, что я не вижу причин для того, чтобы сначала не использовать код, так как я хочу создать прочную основу для перехода от нашей старой жестко закодированной базы данных взаимодействия.
Как мне нужно, чтобы POCO выглядело так:
public class Owner
{
[Key]
public Guid Owner_Id { get; set; }
// Properties
public string ContactName { get; set; }
public string PhoneNumber { get; set; }
public string Email { get; set; }
// Navigational properties
public virtual ICollection<Plant> Plants { get; set; }
}
public class Plant
{
[Key]
public Guid Plant_Id { get; set; }
// Properties
public string Address { get; set; }
public string City { get; set; }
public string State { get; set; }
public string Zip { get; set; }
// Foreign Keys
public Guid Owner_Id { get; set; }
// Navigational properties
public virtual Owner Owner { get; set; }
public virtual License License { get; set; }
}
public class License
{
[Key] public Guid License_Id { get; set; }
// Properties
public int Total { get; set; }
public int Users { get; set; }
public string Key { get; set; }
// Foreign Keys
public Guid Plant_Id { get; set; }
// Navigational properties
public virtual Plant Plant { get; set; }
}
Это дает мне эту ошибку при попытке создать контекст:
«Невозможно определить основной конец ассоциации между типами« Лицензия »и« Завод ». Основной конец этой ассоциации должен быть явно настроен с использованием либо API-интерфейса свободной связи, либо аннотаций данных.»
Я понимаю, что у Plant должна быть пустая ссылка FK на License_Id, а у лицензии не должно быть FK для Plant_Id. Но это карты, которые мне сдали. Возможно ли то, что я пытаюсь сделать в EF?