我是否正确使用WCF服务从客户端接收数据并将其存储在数据库中
本文关键字:数据 存储 数据库 端接 客户端 是否 WCF 客户 服务 | 更新日期: 2023-09-27 18:19:30
我已经定义了一个服务契约,并且实现了操作。这是我实现的一个服务示例:
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测试客户端在本地发送数据,并将其存储在数据库中。
我不是在定义数据合约。因此,我不确定当远程客户端从安卓或微软应用程序进行呼叫时,该服务是否有效。
当您只使用基元类型作为参数时,不必定义数据契约。他们被认为有违约合同。如果要使用复杂类型作为参数,它必须是DataContract。如果参数的数量变大(比如超过4个),或者您想对相关参数进行分组,则可能需要将它们封装到一个自定义类型中,然后该类型必须是DataContract。
有些人喜欢总是使用DataContracts,即使它们只有一个参数。当您以后想要向操作中添加参数时,这可以使操作变得更容易。你只需要把它添加到数据契约类中,而不是改变每个调用,再加上服务契约接口和实现它的类。这是个人偏好的问题。
至于存储数据,您可能希望将数据访问层(incDBEntities
)作为类成员,只实例化一次,而不是每次调用操作时都实例化。