首页 文章

在WCF上公开实体框架数据类型

提问于
浏览
1

编辑:我不知道你们是怎么做的,但这个问题确实是重复的 . 往上看 .

目前我掌握的是一个WCF服务,它暴露了一些基本操作:

public interface IUniService
{
    [OperationContract]
    bool IsUser(string userName);

    [OperationContract]
    User GetUserByUsername(string userName);
}

我还运行了一个Entity Framework数据库 . 这是访问服务器的一些代码 .

public bool IsUser(string userName)
{
    using (UniDBEntities db = new UniDBEntities())
    {
        User a = new User();
        var user = db.Users.Where(p => p.UserName == userName).ToList();
        return (user.Count() != 0);
    }
}

但我的问题是,我想通过WCF服务公开当前在我的实体框架中的一些类 . 当我写一个函数,如:

User GetUserById(int id)

当我返回结果时,似乎我的客户端不知道User类是什么 . 如何将我的实体公开为Datamembers?

1 回答

  • 1

    我认为您不能轻易地透明地将EF对象与数据库断开连接,但是您可以创建一个dto或poco并通过网络发送它 . 对于读取不是问题,您发送只读数据,用于写入数据库,创建专用于更新数据的方法,或者您可以获取EF对象,发送和接收副本,适当地包装为poco / dto,以及然后用更改来更新它 .

    尽管将中间层建模与db模式的方式不同可能更好,但是,使其成为域模型,因此wcf方法和EF对象之间不存在1对1的映射 . 然后,您可以使您的wcf模型更适合调用者 .

    查找存储库模式作为示例 .

相关问题