我可以将任意SQL查询映射到实体框架字段吗?

问题描述:

是否可以将字段添加到实体框架类,而不是映射到表中的列而是映射到SQL查询?我可以将任意SQL查询映射到实体框架字段吗?

对于一个人为的例子(注意:这不是我真正想做的事情,只是一个更容易解释我想要完成的例子)我希望我的班级有一个TableCount字段来保存结果SELECT COUNT(*) FROM MyTable在对象从数据库加载的时间。

编辑:我应该在我原来的文章中提到过这一点,但我使用POCO类。

你不能映射到数据库实体直接做,而是有两种方法如何与包含从原始的实体和列创建额外的计算列一个新的实体类型来实现它:

  • 创建数据库视图并映射该视图 - 这是EDMX设计人员为您全自动维护的方式
  • 编写查询以填充整个新实体类型并将其手动映射到DefiningQuery。缺点是它需要手动进行EDMX编辑,并且无需额外(商业)工具也可以手动维护EDMX,因为每次选择从数据库更新时,标准VS EDMX Designer都会覆盖已编辑的SSDL部分。
+0

请参阅我的编辑。我使用POCO类,所以EDMX设计师并没有真正进入它。 – Mykroft 2012-03-19 18:55:32

+0

EDMX仍然可以使用POCO类。如果您先使用代码,则无法将自定义查询映射到您的类,但是如果您正在使用现有数据库的代码映射,则可以使用第一种方法。 – 2012-03-19 19:10:31