我正在使用 LINQ to SQL 和 DataGridViews 创建数据库的可编辑用户界面。
我的问题是从数据库中获取结果时我必须翻译列名,因为虽然数据库中的所有名称都是英文(Visual Studio 类设计器支持的唯一语言),但我必须以不同的语言显示它们...
所以我想到了使用匿名类型:
c_dgvShops.DataSource = (from Shop s in DataContext.Shops
select new
{
Azonosito = s.Shop_ID,
Nev = s.Name,
Megye = s.County,
Iranyitoszam = s.Zipcode,
Cim = s.Address,
Latogatasok_szama = s.Visits.Count
});
(请注意,匿名类型的属性名称是匈牙利语[我必须显示的语言],翻译自英语。)
这导致 DataGridViews 是只读的。
我做了一些谷歌搜索,发现了这个:
http: //blogs.msdn.com/swiss_dpe_team/archive/2008/01/25/using-your-own-defined-type-in-a-linq-query-expression。 .aspx _
根据这篇文章,我创建了一个名为“Bolt”(Shop 的匈牙利语等价物)的新类,并用翻译后的属性名称填充它,因此查询变为:
c_dgvShops.DataSource = (from Shop s in DataContext.Shops
select new Bolt
{
Azonosito = s.Shop_ID,
Nev = s.Name,
Megye = s.County,
Iranyitoszam = s.Zipcode,
Cim = s.Address,
Latogatasok_szama = s.Visits.Count()
});
虽然对我来说并不完全清楚,但这如何使编辑 DataGridView 中显示的数据成为可能,我试了一下,得到了一个异常:
NotSupportedException:不允许在查询中显式构造实体类型“DataTest_L2SQL.Bolt”。
那么这样做的正确方法是什么?如何显示别名列名称,但仍保持数据可编辑?
非常感谢您!