【问题标题】:Partial class property on Entity Framework entity has no Metadata in Breeze实体框架实体上的部分类属性在微风中没有元数据
【发布时间】:2015-01-21 04:29:48
【问题描述】:

我的“联系人”实体有一个属性:

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

然后我使用微风从返回联系人的 Web API 函数中获取联系人数据。从我的 Web API 调用返回的数据具有“FullName”属性和向下传递给客户端的正确值,但我的“元数据”在它的任何地方都没有“FullName”属性。我需要做什么才能获取元数据?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 我遇到了同样的问题 - 在 EF Model First 类上,构建了一个部分类以在服务器上使用一些有用的属性对其进行扩展(注意:我的扩展属性没有设置器) .要么微风应该为这些额外属性生成元数据,要么不应该序列化它们。
      猜你喜欢
      • 2015-04-20
      • 1970-01-01
      • 2013-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多