gpt4 book ai didi

entity-framework - 无法通过将对象数据源拖动到 WinForm 来创建 Gridview

转载 作者:行者123 更新时间:2023-12-04 08:30:29 25 4
gpt4 key购买 nike

我想通过将它们各自的数据源拖到窗体上来创建一组 DataGridView 控件。我会为一个对象及其导航属性之一(来自数据源)执行此操作,因此在主从关系中具有两个网格。

移动到 Visual Studio 2012(和 EF 5.0)后,第一个网格按预期(使用导航器)通过。但是,对于“详细信息”网格,只显示两列(“Count”和“IsReadOnly”)。我已经尝试过其他表/对象,但遇到了同样的问题。我试过“编辑列”和“添加列”都没有。
我以北风为例。我想要一个表单中的 2 个 datagridview。一个用于客户,另一个用于相关订单。典型的主/详细信息 View 。

  • 我在项目(edmx)文件中添加了一个模型。
  • 向模型添加了一个新数据源。两个对象。客户和订单表!
  • 将客户实体拖动为 datagridview。所有字段(属性)都在网格中。

  • 4 从客户实体而非订单实体本身拖动订单时,只有“计数”和“只读”两列

    上述程序在 linq to sql VS 2012、EF 4.0、.NET 4.5 中运行良好。但不适用于 EF 5.0。

    和,

    步骤与 http://blogs.msdn.com/b/bethmassi/archive/2008/12/10/master-details-with-entity-framework-explicit-load.aspx中描述的beth massi方式完全相同然而,这不是懒加载或急切加载的问题!

    最佳答案

    在您尝试使用的实体的类中,将导航属性类型更改为 ObservableCollection。

    由此:

    public Customer()
    {
    this.CustomerAddresses = new HashSet<CustomerAddress>();
    }

    public virtual ICollection<CustomerAddress> CustomerAddresses { get; set; }
    }

    对此:
    public Customer()
    {
    this.CustomerAddresses = new ObservableCollection<CustomerAddress>();
    }

    public virtual ICollection<CustomerAddress> CustomerAddresses { get; set; }
    }

    由于这是自动生成的代码,因此您还需要更改代码生成文件中的一些规则。尝试手动进行这些更改以确保它们首先起作用,然后进行更改。对我来说,我必须对我的 .tt 文件进行以下更改

    通过添加下面提到的行来使用 System.Collections.ObjectModel 添加。
    return inHeader == string.IsNullOrEmpty(_code.VsNamespaceSuggestion())
    ? string.Format(
    CultureInfo.InvariantCulture,
    "{0}using System;{1}" +
    "{2}",
    inHeader ? Environment.NewLine : "",
    includeCollections ? (Environment.NewLine + "using System.Collections.Generic;") : "",
    includeCollections ? (Environment.NewLine + "using System.Collections.ObjectModel;") : "",
    inHeader ? "" : Environment.NewLine)
    : "";

    并将您的 HastSet 声明更改为 Observable Collection
    this.<#=code.Escape(navigationProperty)#> = new ObservableCollection<<#=typeMapper.GetTypeName(navigationProperty.ToEndMember.GetEntityType())#>>();

    另外,在这里将 ICollection 更改为 ObservableCollection
    navigationProperty.ToEndMember.RelationshipMultiplicity == RelationshipMultiplicity.Many ? ("ICollection<" + endType + ">") : endType,

    您的代码生成文件可能与我的不同,但这些代码部分应该让您了解要在文件中搜索什么。

    关于entity-framework - 无法通过将对象数据源拖动到 WinForm 来创建 Gridview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12695754/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com