【发布时间】:2010-12-09 13:28:25
【问题描述】:
我正在尝试找到一种有效的方法来在 winforms 中对实体框架模型的计算字段进行数据绑定。我正在使用 Visual Studio 2008 和 .NET 框架 3.5。一个例子是 EntityX,假设我有 columnA 和 columnB,我想要一个名为 sumAB 的计算属性。我一直这样做的方式是使用部分类:
public partial class EntityX
{
public int sumAB
{
get
{
return this.columnA + this.columnB;
}
}
}
然后我使用 Visual Studio 将 EntityX 添加为数据源,因此我可以使用自动拖放数据绑定。我遇到的问题是计算的属性没有出现在数据源字段下。我正在寻找一种方法来实现计算字段的自动数据绑定。
我知道我可以手动执行此操作,但是当 columnA 或 columnB 发生更改时,我还必须手动编写所有绑定代码以刷新字段。我也无权在 SQL 服务器端计算此字段。
有没有人知道任何方法来完成这个或任何其他类似的劝说方向?
谢谢!
更新
我在另一台机器上使用 Visual Studio 2010 和 .NET 4 对此进行了测试,但我仍然收到相同的行为。有趣的是,我可以手动创建一个文本框并添加一个数据绑定,它可以正常工作,如下所示:
sumABTextBox.DataBindings.Add(
new System.Windows.Forms.Binding("Text", EntityXBindingSource, "sumAB", true));
如果我将属性放在 .edmx 文件中,它也可以工作,但这是不可取的,因为它会在数据库更新时被擦除。
还有其他想法吗?
更新 2
仍然没有解决方案...我不得不在我的代码中使用替代方案来满足最后期限。如果有人找到答案,我仍然对此非常感兴趣......
【问题讨论】:
-
我看不出你正在做的事情不起作用的原因。它只是一个属性,所以生成数据源的代码如何感知它是不同的,这超出了我的理解。您能否深入研究解决方案中的数据源 xml 并查看其中是否存在属性绑定?
-
我看了看。我不熟悉这些文件的结构,但我确实注意到它列出了自动生成的文件,但它没有将我的文件列为 TypeInfo 标记中的 CSV 之一。我尝试添加我的文件,保存,重新编译,但没有运气......
标签: c# .net winforms visual-studio-2008 entity-framework