编辑:我不知道你们是怎么做的,但这个问题确实是重复的。见上文。
目前我手上的东西是一个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?
答案 0 :(得分:1)
我认为您不能轻易地透明地将EF对象与数据库断开连接,但是您可以创建一个dto或poco并通过网络发送它。对于读取不是问题,您发送只读数据,用于写入数据库,创建专用于更新数据的方法,或者您可以获取EF对象,发送和接收副本,适当地包装为poco / dto,以及然后用更改来更新它。
尽管将中间层建模的方式与db模式不同可能更好,但是,使其成为域模型,因此wcf方法和EF对象之间不存在1对1的映射。然后,您可以使您的wcf模型更适合调用者。
查找存储库模式作为示例。