2010-05-04 140 views
1

我是Silverlight的新手,因此Silverlight中的数据访问如此与我同在。我有一个引用sql server 2008数据库的ADO.Net实体数据模型。导致问题的表被称为事务。交易表具有不可空的字段“MerchantChain”。此表由另一个程序填充,该程序在未提供商户链时将空字符串插入到商户链字段中。因此,在我的Silverlight应用程序中,我使用基于用户提供的条件的事务加载网格。网格仅用于显示,但我需要能够在用户查看后更新事务的状态。所以我设置了transaction.status字段并尝试提交更改。在提交更改之前,transaction.HasValidationErrors为false。只要submitchanges被执行(在调试器中),HasValidationErrors就是true,并且submit会引发一个未处理的异常。 ValidationError是商务链字段是必需的。那么,它是一个空字符串 - 它不是null。不知道该怎么做。这是visual studio 2010,silverlight 4,vb.net。Silverlight RIA服务SubmitChanges验证错误

+0

ouch我的同情。一个使字段不可为空的设计,但将这样的字段中的空字符串视为可接受的和期望的值,这是一种麻烦。 – AnthonyWJones 2010-05-04 15:20:13

+0

@AnthonyWJones空白字符串与可空字符串不同。考虑查询:SELECT * WHERE SomeString!='Foo',如果SomeString不可为空,则结果集将包含空字符串值,如果它可为空,那些空行将会丢失。空白字符串是'长度为0的字符串',NULL是'没有字符串,没有长度,没有任何东西' – Sprague 2010-11-02 18:21:58

+1

@Eugarps:嗯..好的谢谢你。 – AnthonyWJones 2010-11-02 22:09:26

回答

1

[必填(AllowEmptyString =真)]

你需要作出允许空字符串。去你的好友类,并添加此。更多细节可以在这里找到:

http://forums.silverlight.net/forums/p/176631/398676.aspx

+0

谢谢 - 像冠军一样工作!对于VBers,它是[DomainServiceName] .metadata.vb文件。语法是 Bob 2010-05-17 14:45:31

+0

这只是我或MS在这里可以做得更好? – 2010-05-29 17:50:11

+0

我不太清楚你的意思。我猜你的意思是不需要AllowEmptyString。基于RequiredAttribute强制执行验证。如果有一个必需的字段绑定到一个文本框,我想我的验证要求用户输入文本,除非我特别允许它。难点在于RIA从数据库中推断出这些属性。所以db设计者标记了一个字符串字段'not null',所以默认情况下RIA也假定'不为空字符串'。其背后的想法是,如果我看到[必填],我希望用户必须输入SOMETHING。 – JosephC 2010-06-26 18:31:02