【问题标题】:best way to consume interface that implement entity framework entities in wcf data services在 wcf 数据服务中使用实现实体框架实体的接口的最佳方式
【发布时间】:2016-07-30 17:59:55
【问题描述】:

我正在尝试首先使用 WCF 数据服务和实体框架数据库为服务器端创建客户端服务器应用程序,并为客户端创建带有 MVVM 的 WPF。 这一切都很好,除了一步, 我为每个实体实现了一个部分类(以避免自动生成的代码问题)来实现一个名为 IPrimaryModel 的通用接口,该接口实现了每个表中的所有通用属性,例如 Id 、 CreattionDate 等 下面是一个例子:

public Interface IPrimaryModel
{
    string Id { get; set; }
    string Observation { get; set; }
    System.DateTime Creation_Date { get; set; }
    Nullable<System.DateTime> Update_Date { get; set; }
}

对于每个实体:

public partial class Brand : IPrimaryModel {}

对于 MVVM 模式,我为所有视图模型创建了一个基本的通用类,这些视图模型与 WCF 和 EF 表示的每个实体相关

public abstract class PrimaryEntityVm<T> : DgVmSource where T : class, IPrimaryModel, new()
{}

但问题是:我找不到在客户端使用 WCF 的 IPrimaryModel 的方法,我需要使用此接口进行常见操作以避免多次编写相同的代码 比如这段代码

criteria.Add(new Predicate&lt;T&gt;(x =&gt; x.Id != null &amp;&amp; x.Id.Contains(ObservationFilter)));

感谢您的帮助

【问题讨论】:

  • 您可以在放置界面的位置创建新项目。然后在 WCF 和客户端引用该项目。
  • 谢谢你的回答,但这也无济于事,总是不能用作类型参数'T' bcs没有隐式引用转换..
  • 我尝试使用相同的 wcf 项目,但这也会产生冲突错误..
  • 我明白了,那么我认为您可以为 WCF 生成的类型创建一些“外观”类。或者为 WCF 使用 cusotm 代理生成。
  • 在一天结束时,您会遇到不支持泛型的 EF 限制。但我并不完全清楚你想要Predicate&lt;T&gt; 是什么。

标签: c# wpf entity-framework mvvm wcf-data-services


【解决方案1】:

我通过使用带有谓词的动态对象类型找到了解决方案

criteria.Add(new Predicate<dynamic>(x => x.Id != null && x.Id.Contains(ObservationFilter)));

通过这种方式,在运行时运行之前,兼容不会验证公共属性是否属于所选对象!
source

第二种方法一种强大的方法 http://www.puresolutions-online.com/Blog/December-2014/Extending-WCF-Data-Service-Entities

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多