我已经定义了服务合同并且已经实施了操作。这是我实现的服务的一个示例:
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应用程序调用时,我不确定该服务是否可行。
答案 0 :(得分:0)
当您仅使用基元类型作为参数时,不必定义数据协定。他们被认为有违约。如果要将复杂类型用作参数,则它必须是DataContract。如果参数数量变大(例如超过4),或者您想要对相关参数进行分组,则可能需要将它们封装到自定义类型中,然后必须是DataContract。
有些人喜欢使用DataContracts,即使他们只有一个参数。当您想要在操作中添加参数时,这可以使以后的生活更轻松。您只需将其添加到数据协定类,而不是更改每个调用,加上服务契约接口和实现它的类。这是个人偏好的问题。
至于存储数据,您可能希望将数据访问层(incDBEntities
)作为只成例实例化一次的类成员,而不是每次调用操作时。