实体框架 - 看似简单的问题

时间:2011-03-31 20:08:19

标签: entity-framework entity-framework-4 poco

长时间听众,第一次打电话......

所以我将现有的应用转换为ef。到目前为止,我很享受这种体验。我有一个POCO类,它有一些简单的用户属性。

离。

public string FirstName { get; set; }
public string LastName { get; set; }
other properties...
public string FullName
{
    get { return FirstName + " " + LastName; }
}

如何使用EF完成此操作?可以在EDM中完成,还是我必须创建一个局部类?我更喜欢EDM ...

2 个答案:

答案 0 :(得分:2)

您需要部分类,因为这是在您的代码中而不是在数据库中计算的属性。这里的问题是读/写实体必须只有映射到表的属性,但是你的表可能没有FullName列=你不能映射它而你不能在查询中使用它。 EDM中的计算属性是可能的,但前提是您只有Query view(在ESQL中定义的视图)或Defining query(自定义SQL选择)定义的只读实体。如果您想在查询中使用FullName,则必须将其定义为model defined functionQuery view, Defining Query和模型定义的函数是高级EF功能,在设计器中不可用。您必须将EDMX作为XML打开并手动编辑。

答案 1 :(得分:0)

如果您已经拥有POCO架构,则可能需要考虑使用EF4 CodeFirst。它允许您使用现有的POCO类"原样",不需要重新计算所需的计算属性等内容,只需将它们连接到您在代码中配置的DBContext即可。

这种方法对大多数POCO人来说都很有吸引力,它让我再次给EF看了一眼。 Scot Gu在这篇文章http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework-4.aspx中介绍了它,他做了一系列的文章,因为它提供了很多关于如何使用CodeFirst配置持久性的详细信息。