我是WCF的新手并尝试使用Visual Studio 2012制作简单的CRUD服务并涉及MSSQL存储过程。
我不喜欢Load
方法。计划按ID返回单个实体,但我必须使用.First()
方法,因为自动生成Goods.Context.cs
将GoodsLoad
的结果定义为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();
}
}
}
}
假设返回一行。
答案 0 :(得分:0)
EntityFramework的一个有趣的事情是你可以使用LINQ。
所以你可以这样做:
db.GoodsLoad().Single(goods => goods.Id = id);
或者更好的是,这个:
db.GoodsLoad().Find(id);