WCF REST服务(JSON),并首先使用我的模型数据与实体框架数据库(WCF REST serv

2019-09-19 18:35发布

另一个相当大的冠军。

只是一些基本信息第一:使用.NET 4 / EF 4.x版/ Visual Studio 2010的SP1。

我有使用JSON作为数据传输一个WCF基于REST的服务。 我用从史蒂夫Mitchelotti的例子(肯定还有其他的描述这个太) http://geekswithblogs.net/michelotti/archive/2010/08/21/restful-wcf-services-with-no-svc-file-and -no-config.aspx

我有一个非常基本的模型/类,如下所示:

public class DiaryEvent
{ 
    public Int64 ID { get; set; }
    public Int64 CalendarResourceID { get; set; }
    public string Subject { get; set; }
    public string Location { get; set; }
    public DateTime Start { get; set; }
    public DateTime End { get; set; }
    public string Description { get; set; }
    public string Colour { get; set; }
    public string AllDay { get; set; }
}

现在,再次以最小的WCF / REST的史蒂夫的例子​​,我有一个定义的方法/数据服务,如下合同的界面:

[的ServiceContract]接口IDiaryService {[OperationContract的] //列表GetEvents(); 串GetEvents();

[OperationContract]
DiaryEvent GetEvent(string id);

[OperationContract]
void InsertEvent(DiaryEvent NewDiary);

[OperationContract]
string UpdateEvent(string id, DiaryEvent UpdatedEventData);

}

我想我还可以添加其他WebGet / WebInvoke装修材料进入界面也是如此,但现在这是它的外观。

所以后来到实际的服务代码,现在我使用的是基本的列表<>到管上,像这样getevents方法的测试数据:

WebGet(UriTemplate = "GetEvents", ResponseFormat=WebMessageFormat.Json)
public DiaryEvent GetEvents()
{
    List<DiaryEvent> EventList = new List<DiaryEvent>();
    EventList.Add(new DiaryEvent { AllDay = "false", ID = 1, CalendarResourceID = 1, Start = new DateTime(2012, 07, 18, 15, 0, 0), End = new DateTime(2012, 07, 18, 17, 0, 0), Location = "Golf Club 1", Colour = "#FEDEFF", Description = "Event 1 Description", Subject = "Event 1" });
    EventList.Add(new DiaryEvent { AllDay = "false", ID = 2, CalendarResourceID = 2, Start = new DateTime(2012, 07, 19, 15, 0, 0), End = new DateTime(2012, 07, 18, 17, 0, 0), Location = "Golf Club 1", Colour = "#FEDEFF", Description = "Event 2 Description", Subject = "Event 2" });
    EventList.Add(new DiaryEvent { AllDay = "false", ID = 3, CalendarResourceID = 3, Start = new DateTime(2012, 07, 20, 15, 0, 0), End = new DateTime(2012, 07, 18, 17, 0, 0), Location = "Golf Club 1", Colour = "#FEDEFF", Description = "Event 3 Description", Subject = "Event 3" });

    return EventList;
    //return JsonConvert.SerializeObject(EventList);
}

(只是注意到计算器与[周围的装饰格式]有问题!)

所以,很显然上述一个非常简单的例子得到一些JSON数据返回给客户端。

我的观点是,我是想用EF 4.x的也许连接到我的数据库(表已经创建的,因此数据库首先将是我的选择..)。 我只是需要一些指导如何最好地编写代码连接到填充我DiaryEvents模型,并从EF数据?

如果任何人都可以点我的一些例子/思想方向是正确的?

非常感激! 大卫。

Answer 1:

我想你应该从这个代码项目的例子开始。

http://www.codeproject.com/Articles/127395/Implementing-a-WCF-Service-with-Entity-Framework



Answer 2:

ServiceContract]
    public interface IRestServiceImpl
    {
        [OperationContract]
        [System.ServiceModel.Web.WebInvoke(Method = "GET",ResponseFormat=System.ServiceModel.Web.WebMessageFormat.Xml, BodyStyle =System.ServiceModel.Web.WebMessageBodyStyle.Wrapped, UriTemplate = "xml/{id}")]
        string XMLData(string id);
        [OperationContract]
        [System.ServiceModel.Web.WebInvoke(Method = "GET", ResponseFormat = System.ServiceModel.Web.WebMessageFormat.Json, BodyStyle = System.ServiceModel.Web.WebMessageBodyStyle.Wrapped, UriTemplate = "json/{id}")]
        string JSONData(string id);
    }

public class RestServiceImpl : IRestServiceImpl
    {
        #region IRestService Members
        public string XMLData(string id)
        {
            return "You Request Porduct" + ":"+id;

        }
        public string JSONData(string id)
        {
            return "Yor Request Product" +":"+ id;
        }
        #endregion
    }


文章来源: WCF REST service (JSON) and using my model data with entity framework database first