Я новичок в Entity Framework, и я борюсь с базой данных, созданной из моих классов POCO. У меня есть общий класс, который выглядит следующим образом:EF один для многих со ссылкой таблицы
public class Comment
{
public int Id { get; set; }
public string Text { get; set; }
public DateTime CreatedDate { get; set; }
}
и комментарии могут быть добавлены ко многим объектам, позволяет сказать, что, например, Человек и автомобиль, так что я буду иметь эти классы
public class Person
{
public int Id { get; set; }
public List<Comment> Comments { get; set; }
}
и
public class Vehicle
{
public int Id { get; set; }
public List<Comment> Comments { get; set; }
}
Когда EF генерирует мою базу данных, он добавляет Person_Id и Vehicle_Id, что для меня неверно, потому что: a) Это предполагает, что комментарий относится к человеку AND av ehicle, где он должен быть действительно свободным объектом b) Комментарии могут быть добавлены к будущим объектам, для которых потребуется изменение таблицы.
Как я могу получить EF, чтобы скорее использовать ссылку для этого?
(Примечание: я не могу и не хочу добавлять свойства навигации в класс комментариев, так как это потребует изменения класса каждый раз, когда новый объект нуждается в комментариях, а мой класс комментариев находится в моей общей библиотеке, не связанной с людьми или транспортными средствами)
Я нашел эту статью, но я изо всех сил, чтобы получить мой ответ от него: http://weblogs.asp.net/manavi/archive/2011/05/17/associations-in-ef-4-1-code-first-part-6-many-valued-associations.aspx
Спасибо за предложения, мое беспокойство по поводу изменения таблицы в будущем не так много трудностей, связанных, но больше контроля изменений, связанный, это на самом деле над упрощением моего требования, в моем приложении это может иметь большие проблемы с реализацией , Плюс с точки зрения схемы, я думаю, что ее неправильная необходимость обновлять общий объект для каждого объекта, который может ссылаться на него, можно спорить в обоих направлениях, но мне это не нравится. Я буду тестировать ваше предложение, но если он создаст таблицу PersonComment и таблицу VehicleComment, она, вероятно, не сработает для меня. –
@AdriaanDavel Table Per Hierarchy создает одну таблицу для всех комментариев - аналогичную той, которая у вас уже есть, но с «Дискриминатором» ". См. Мое редактирование, что фактически меняется при использовании TPH. – Colin