Asp.net 在实体框架模型中创建复合属性?

Asp.net 在实体框架模型中创建复合属性?,asp.net,vb.net,entity-framework,entity-framework-4,Asp.net,Vb.net,Entity Framework,Entity Framework 4,我有两个属性(“名字”和“姓氏”),我需要作为单个属性访问(例如“全名”)。有没有办法向实体模型添加一个属性,该属性包含FIRST_NAME和LAST_NAME的组合值?由于EF4创建的模型类通常是部分类,因此您可以选择使用其他属性和方法在单独的文件中扩展这些类。在那里,您可以添加一个只读属性,该属性只包含一个Getter,以返回您的组合全名: public partial class Person { public string FullName { get

我有两个属性(“名字”和“姓氏”),我需要作为单个属性访问(例如“全名”)。有没有办法向实体模型添加一个属性,该属性包含FIRST_NAME和LAST_NAME的组合值?

由于EF4创建的模型类通常是部分类,因此您可以选择使用其他属性和方法在单独的文件中扩展这些类。在那里,您可以添加一个只读属性,该属性只包含一个Getter,以返回您的组合全名:

public partial class Person
{
    public string FullName
    {
        get
        {
            return string.Concat(FirstName, " ", LastName);
        }
    }
}

这是一个属性,它仅在模型类中,但未映射到数据库,并且在数据库中不作为列存在。因为您在一个单独的文件中创建了分部类的这一部分,所以如果您要更改模型,模型设计器不会触及和覆盖它。

谢谢,这非常有用。不幸的是,我不能将这些带有QueryExtenders的分部类用作数据字段,这正是我的目的地:(@davemackey:Ah,我明白了,你想查询
FullName
,对吗?你是在使用“数据库优先”设计吗?然后可能有一个选项,可以直接在数据库中创建一个计算列来进行连接。你可以将该列映射到模型中的一个属性(EF designer会自动创建此属性)和查询应该是可能的。希望QueryXtender也允许使用此字段,但我不太确定。谢谢。不幸的是,我已经有了数据库。因此我必须以某种方式执行名和姓的串联。我正在考虑使用QueryXtender的CustomExpression选项,但到目前为止还无法让它工作起来。这仍然是一种非常相关且简单的获取只读属性集的方法。您不能使用它们进行查询(因为字段实际上没有映射到DB列),但它们便于在排序和显示数据时使用。