В моей базе данных SQL Server есть 3 таблицы:
Каждая из этих таблицсодержит некоторые столбцы, которые также находятся в других, например:
Все остальные столбцы различны.Это устаревшая база данных.Я не могу изменить его.
В моем коде на C # я хотел бы иметь:
public partial class Person
{
public string FirstName { get; set; }
public string Surname { get; set; }
public virtual ICollection<Role> Roles { get; set; }
}
public interface Role
{
}
public partial class Teacher : Role
{
public string School { get; set; }
}
public partial class Student : Role
{
public string YearLevel { get; set; }
}
public partial class Parent : Role
{
public string Blagh { get; set; }
}
То есть полиморфную связь «многие-к-одному» между ролью и человеком.
Причина, по которой я этого хочу, заключается в том, что человек может быть и учителем, и родителем.
У меня вопрос: какую технологию я должен использовать для заполнения бизнес-объектов из базы данных?
Я смотрел на материал Entity Framework 4.1 DbContext;Мне нравится подход аннотации данных, но может ли он делать то, что я хочу?Если нет, может ли Fluent API?
Если Entity Framework не может этого сделать, то как насчет NHibernate (желательно с использованием атрибутов) или Linq-to-SQL?
Я знаю NHibernateможет обрабатывать полиморфную ассоциацию, но можно ли это сделать, когда мы разбиваем таблицы между сущностями, как здесь?