实体框架实体上的部分类属性在Breeze中没有元数据

时间:2013-04-19 18:59:09

标签: entity-framework breeze asp.net-web-api

我在"联系"实体:

public partial class Contact
{
    public string FullName { get { return this.FirstName + this.LastName; } set { } }
}

然后我使用breeze从我的返回Contacts的Web API函数中获取Contact数据。我的Web API调用返回的数据包含" FullName"财产和正确的价值落到客户端,但我的"元数据"没有" FullName"财产在任何地方。我需要做些什么来获取元数据?

3 个答案:

答案 0 :(得分:0)

我发现从服务器向元数据添加部分类项目没有合理的解决方案。我的意见是,这应该被视为服务器Breeze元数据功能的一个错误。 但是,扩展项数据确实从服务器提供 因此,如果您在客户端元数据存储上手动添加扩展属性,一切都应该没问题。 以下是如何在javascript客户端代码中执行此操作的示例:

var man = new breeze.EntityManager(myServiceName);
man.metadataStore.registerEntityTypeCtor('Contact', function () { this.FullName = ''; });

答案 1 :(得分:-1)

你真的不希望那些计算出的属性通过网络传输,对吗?为什么你有一个二传手?这是一个只读属性。如果这是一个EF Code First类,你是如何让EF不相信FullName被映射到“联系人”表中的“FullName”列?

我将假设您实际上并不希望“FullName”通过电汇。您希望使用自定义EntityType构造函数或初始化程序扩展类型。我认为在这种情况下你想要一个初始化器。

查看“Extending Entities”,这恰好说明了fullName属性的推荐技术。

答案 2 :(得分:-1)

在部分类中,我使用从DbGeography类型的luogo派生的此属性扩展我的实体。

public Nullable<double> Latitude
{
        get
        {
            return luogo.Latitude;
        }
        set
        {
            luogo = luogo.CreatePoint(value.Value, luogo.Longitude.Value);
        }
}

我认为沃德所说的不适用于我的情况。不是吗?

相关问题