6

我正在寻找以下问题的解决方案:

我有许多表在少数/无列中相互区分(为什么会发生这种情况并非如此,因为我没有设计所述数据库,也无法更改它)。

示例:表用户:Columns{name,surname,age} 表 OldUser:Columns(name,surname,age,lastDateSeen} 等

有什么方法可以指示 Visual Studio 中的 EntityFramework 4.0 扩展由 _name、_surname、_age 字段及其相应属性组成的基类,以便我可以将该类用于代码中的批处理作业?

我目前的解决方案是制作这个类并使用转换器将持久对象中的值传递给它的对象。它有效,但它并不优雅,我不喜欢它。

我来自 java/hibernate 环境,这是基本功能。

(如果我希望类实现接口,是否可以做同样的事情以供将来参考?)

提前致谢。

4

1 回答 1

1

由于您的 RDBMS(至少 SQL Server 2008 和更早版本)不允许表继承,我建议您不要在 C# 的 DB 模型中使用继承。当您无法控制表格的设计时,尤其建议您这样做。

如果您实际上有那些将从抽象中受益的类的客户,请改为使用接口,但是无法控制 DB 的设计会使这变得不那么有价值,因为 DB 设计者可以更改表,从而使您的 EF 类不再实现界面:

public interface IUser {
  public string Name { get; }
  // etc...
}

public class User : IUser {
  public string Name { get; set; }
  // etc...
}

public class OldUser : IUser {
  public string Name { get; set; }
  // rest of IUser
  public DateTime? LastSeenOn { get; set; }
}
于 2012-12-28T02:12:59.887 回答