在WCF中返回单个结果

时间:2015-11-20 15:45:42

标签: c# wcf

我是WCF的新手并尝试使用Visual Studio 2012制作简单的CRUD服务并涉及MSSQL存储过程。

我不喜欢Load方法。计划按ID返回单个实体,但我必须使用.First()方法,因为自动生成Goods.Context.csGoodsLoad的结果定义为ObjectResult<GoodsLoad_Result>而不是简单{{1} }}。如何正确自动生成?

Goods.Context.cs(自动生成)

GoodsLoad_Result

IGoods.cs

namespace StorehouseServer
{
    public partial class storehouseEntities : DbContext
    {
    //.............................................

        public virtual ObjectResult<GoodsLoad_Result> GoodsLoad(Nullable<int> iD)
        {
            var iDParameter = iD.HasValue ?
                new ObjectParameter("ID", iD) :
                new ObjectParameter("ID", typeof(int));

            return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<GoodsLoad_Result>("GoodsLoad", iDParameter);
        }
        //.............................................
    }
}

Goods.svc.cs

namespace StorehouseServer
{
    [ServiceContract]
    public interface IGoods
    {
        [OperationContract]
        List<GoodsList_Result> List();
        [OperationContract]
        GoodsLoad_Result Load(int id);
    }
}

ID是数据库中的唯一标识符,只需一个简单的选择:

namespace StorehouseServer
{
    public class Goods : IGoods
    {
        public List<GoodsList_Result> List()
        {
            using (var db = new storehouseEntities())
            {
                return db.GoodsList().ToList();
            }
        }

        public GoodsLoad_Result Load(int id)
        {
            using (var db = new storehouseEntities())
            {
                return db.GoodsLoad(id).First();
            }
        }
    }
}
假设

返回一行。

1 个答案:

答案 0 :(得分:0)

EntityFramework的一个有趣的事情是你可以使用LINQ。

所以你可以这样做:

db.GoodsLoad().Single(goods => goods.Id = id);

或者更好的是,这个:

db.GoodsLoad().Find(id);
相关问题