更新数据库';s使用EF的WCF服务中的表
本文关键字:WCF 服务 EF 使用 数据库 更新 | 更新日期: 2023-09-27 17:58:43
我想更新wcf web服务中的数据库表。但我有两个错误。首先,我无法将字符串更改为datetime。我发送了"1991年1月1日",但我收到了错误。其次,我无法更新我的表格。我该怎么修?
myentities db = new myentities();
public bool EditPerson(int uid,string _name,string bdate,string adr,string cty,string email,string tel,string pass)
{
DateTime myDate = DateTime.ParseExact(bdate, "yyyy-MM-dd",null); //Error
var person = db.Person.FirstOrDefault(x => x.pID == uid);
if (person != null)
{
Person pt = new Person();
pt.pName = _name;
pt.birthDate = myDate;
pt.adress = adr;
pt.city = cty;
pt.email = email;
pt.tel = int.Parse(tel);
db.Entry(person).CurrentValues.SetValues(pt);
db.SaveChanges(); //Error
return true;
}
return false;
}
错误:由于内部错误,客户端无法处理请求
Server stack trace:
location: System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(Message reply, MessageFault fault, String action, MessageVersion version, FaultConverter faultConverter)
location: System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc)
location: System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
location: System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
location: System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
Exception rethrown at [0]:
location: System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
location: System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
location: IService.EditPerson(Int32 uid, String _name, String bdate, String adr, String cty, String email, String tel, String pass)
location: ServiceClient.EditPerson(Int32 uid, String _name, String bdate, String adr, String cty, String email, String tel, String pass)
来自DateTime.ParseExact
方法
将指定的日期和时间的字符串表示形式转换为其使用指定格式和特定于区域性的等效DateTime格式信息字符串表示形式的格式必须匹配指定的格式
在你的情况下,他们不是。如果您的字符串是1/1/1991
,那么您需要使用d/M/yyyy
(我认为第一个是天)格式。
您可能需要使用InvariantCulture
,因为/
自定义格式说明符具有的特殊含义,请用当前区域性日期分隔符替换我。当您使用null作为IFormatProvider
时,此方法将使用您的CurrentCulture
。如果您当前的区域性线程将/
作为DateSeperator
,那么可以使用null
。
DateTime myDate = DateTime.ParseExact(bdate, "d/M/yyyy",
CultureInfo.InvariantCulture);
我不能对你的更新错误说什么,因为我对实体框架不太熟悉。