【发布时间】:2011-09-19 08:05:51
【问题描述】:
我正在尝试通过 WCF 将数据保存回数据库,但我不断收到:
Cannot insert the value NULL into column 'Id', table 'ResellerPlatform.dbo.Contacts'; column does not allow nulls. INSERT fails. The statement has been terminated. (System.Data.UpdateException)
通过服务端本身的 WebGet 也会发生同样的情况:
[WebGet]
public void AddContact()
{
var Contact = new Models.ResellerPlatform.Contact
{
Id = Guid.NewGuid(),
Name = "Foo"
};
base.CurrentDataSource.AddToContacts(Contact);
base.CurrentDataSource.SaveChanges();
}
Contact 模型是一个基本实体,有一个 Id(Guid)和一个 Name(字符串),没有任何关系或任何东西。这是我的访问规则:
Config.SetServiceOperationAccessRule("*", ServiceOperationRights.All);
Config.SetEntitySetAccessRule("*", EntitySetRights.All);
我不明白为什么它一直抛出异常,因为 Id 不是 null。想法、建议?
【问题讨论】:
-
你用的是sql server吗?看起来 Id 列未填充。您可以使用 sql profiler 查看发送到 sql server 的内容。
-
Id是如何映射的?顺便提一句。 GET 操作不应该用于任何修改应用程序中数据的操作。
-
@rudolf_franek, Ladislav Mrnka 是的,我知道。我只是用它来调试,因为它更容易:-) SQL 分析器的好主意,但我怀疑它会是 NULL,知道为什么 WCF 会这样做吗?
-
我希望您使用浏览器进行 GET 请求 - 我主要使用 www.fiddler2.com - 它允许使用所有 http 方法并轻松读取标头。
标签: c# sql wcf c#-4.0 wcf-data-services