我是否正确使用WCF服务从客户端接收数据并将其存储在数据库中?

时间:2012-01-05 21:22:17

标签: c# database wcf wcf-data-services

我已经定义了服务合同并且已经实施了操作。这是我实现的服务的一个示例:

public int CreateIncident(string incidentName, string location, DateTime timeStamp)
{

    //Initilise db object to reference incidentDB database
    incDBEntities db = new incDBEntities();

    int incId = db.Incidents.Max(i => i.incId);

    // Create new record with incremented incident id and assigned fields 
    Incident inc = Incident.CreateIncident(++incId);

    inc.description = incidentName;
    inc.location = location;
    inc.whenReported = timeStamp;

    //Add the incident instance and save changes/updates made to database
    db.AddToIncidents(inc);
    db.SaveChanges();

    return inc.incId;
}

客户端使用数据作为参数调用此服务。

将参数分配给数据字段并将数据存储在数据库中是否可以? 目前,我已成功通过WCF测试客户端在本地发送数据,并将其存储在数据库中。

我没有定义数据合同。因此,当远程客户端从Android或Microsoft应用程序调用时,我不确定该服务是否可行。

1 个答案:

答案 0 :(得分:0)

当您仅使用基元类型作为参数时,不必定义数据协定。他们被认为有违约。如果要将复杂类型用作参数,则它必须是DataContract。如果参数数量变大(例如超过4),或者您想要对相关参数进行分组,则可能需要将它们封装到自定义类型中,然后必须是DataContract。

有些人喜欢使用DataContracts,即使他们只有一个参数。当您想要在操作中添加参数时,这可以使以后的生活更轻松。您只需将其添加到数据协定类,而不是更改每个调用,加上服务契约接口和实现它的类。这是个人偏好的问题。

至于存储数据,您可能希望将数据访问层(incDBEntities)作为只成例实例化一次的类成员,而不是每次调用操作时。