c# - Entity Framework 中计算属性的数据绑定(bind)

标签 c# .net winforms visual-studio-2008 entity-framework

我正在尝试找到一种有效的方法来在 winforms 中对 Entity Framework 模型的计算字段进行数据绑定(bind)。我正在使用 Visual Studio 2008 和 .NET Framework 3.5。一个例子是 EntityX,假设我有 columnA 和 columnB,我想要一个名为 sumAB 的计算属性。我一直这样做的方式是使用部分类:

public partial class EntityX 
{
    public int sumAB 
    {
        get 
        {
            return this.columnA + this.columnB;
        }
    }
}

然后我使用 visual studio 将 EntityX 添加为数据源,这样我就可以使用自动拖放数据绑定(bind)。我遇到的问题是计算的属性没有出现在数据源字段下。我正在寻找一种方法来实现计算字段的自动数据绑定(bind)。

我知道我可以手动执行此操作,但是当 columnA 或 columnB 更改时,我还必须手动编写所有绑定(bind)代码以刷新字段。我也无权在 SQL 服务器端计算此字段。

有谁知道有什么方法可以完成这个或任何其他类似的指导吗?

谢谢!

更新

我在另一台机器上使用 Visual Studio 2010 和 .NET 4 对此进行了测试,但我仍然收到相同的行为。有趣的是,我可以手动创建一个文本框并添加一个数据绑定(bind),它会正常工作,如下所示:

sumABTextBox.DataBindings.Add(
  new System.Windows.Forms.Binding("Text", EntityXBindingSource, "sumAB", true));

如果我将属性放在 .edmx 文件中,它也有效,但这是不可取的,因为它会在数据库更新时被删除。

还有其他想法吗?

更新 2

仍然没有解决方案...我不得不在我的代码中使用替代方案来满足截止日期。如果有人找到答案,我仍然对此很感兴趣......

最佳答案

对我来说听起来很奇怪。因为我在我的项目中使用了相同的方法( Entity Framework 、 self 跟踪实体、WCF、Winforms)。

我构造了一个简单的 winforms 应用程序来测试它,“计算”属性只显示在数据绑定(bind)中。文本框控件的文本属性。

我创建了一个简单的类:

public partial class Test
{
    public int A { get; set; }
    public int B { get; set; }

    public Test()
    {
    }
}
public partial class Test
{
    public int AB
    {
        get { return A * B; }
    }
}

向表单添加了一个绑定(bind)源(数据源指向一个测试类型的对象)和三个绑定(bind)到绑定(bind)源和属性的文本框:A、B 和 AB。在表单的构造函数中,我创建了一个测试实例,为 A 和 B 填充了值,将 bindingsource.DataSource 设置为创建的实例,并认为在表单上很常规 ;)

这个简单的测试用例与您的情况没有什么不同,只是您使用的实体只是对象而已。我真的从你的描述中看不出问题......任何进一步的评论都可以帮助我进一步帮助你......

关于c# - Entity Framework 中计算属性的数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4398691/

相关文章:

c# - 显示小数点后两位数字,同时在后台保留整个未四舍五入的数字

c# - 如何更改列表框中项目的文本颜色

C# 将程序集类转换为类型

c# - 将 JSON 字符串中的数据覆盖到现有对象实例

c# - 使用 Microsoft Unity 进行异步/等待

.net - F# 基础知识 : turning NameValueCollection into nice string

c# - 为什么在渲染此 Razor View 时出现空引用异常?

c# - 使用 Windows 7 使用凭据管理器保存密码 (.NET 2.0)

ASP.NET 运行时错误 : "path" is not a valid IIS application. VS2012/IIS7.5

c# - 使用基于文本文件的事件创建 C# 表单字段