WPF可以处理从LINQ到SQL的Guids吗?

时间:2010-11-14 12:59:31

标签: c# wpf linq-to-sql

我偶然发现了一个奇怪的问题。在我的WPF(.NET 4)窗口中,我有一个简单的组合框(DisplayMemberPath =“Name”SelectedValuePath =“Id”)。当我加载窗口时,我使用LINQ to SQL将组合框的ItemSource属性设置为context.Currencies.ToList()。 SQL中的Currency表只是 [Id] [uniqueidentifier] NOT NULL PRIMARY KEY,[Name] char NOT NULL 。在.NET中,这转换为 Id = System.Guid,Name = System.String

我遇到的问题是对combobox.ItemsSource = context.Currencies.ToList()的调用;抛出FormatException(Guid应包含32位数字,带有4个破折号(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx))。

我无法理解的是为什么会抛出此错误?

如果我将LINQ to SQL从图片中删除,请定义一个“测试”类 - 公共类Test {public Guid Id;公共字符串名称; },将comobox.ItemsSource设置为包含一些条目的List<Test>,然后一切正常。

如果我这样做:

combobox.ItemsSource = context.Currencies.Select(c => new { c.Id.ToString(), c.Name }).ToList()

然后一切正常。

我尝试将当前线程的Culture和UICulture预先设置为“en-US”(以防万一这是一个文化问题,我的默认文化是“et-EE”),但这也无济于事。 / p>

我查看了设计器生成的LINQ to SQL类,但找不到任何可能导致此错误的属性。

我在这里遗漏了什么或这是否真的是.NET框架中的错误?'

PS! Currency表包含有效条目(有效Guids)。

1 个答案:

答案 0 :(得分:0)

正如托马斯指出的那样,我对SelectedValue有一个绑定,事实证明绑定也包含一个FallbackValue = 1.删除fallback属性后一切正常。该物业被滚出视野,所以确实是我错过了。