【发布时间】:2011-07-05 10:46:27
【问题描述】:
我的 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; }
}
即 Role 和 Person 之间的多态多对一关联。
我想要这个的原因是因为一个人既可以是老师也可以是父母。
我的问题是,我应该使用什么技术来填充数据库中的业务对象?
我看过 Entity Framework 4.1 DbContext 的东西;我喜欢数据注释方法,但它可以做我想做的事吗?如果没有,Fluent API 可以吗?
如果实体框架不能做到这一点,那么 NHibernate(最好使用属性)或 Linq-to-SQL 怎么样?
我知道 NHibernate 可以处理多态关联,但是这可以在我们像这里这样在实体之间拆分表的情况下完成吗?
【问题讨论】:
标签: c# nhibernate entity-framework orm