【问题标题】:How should I create my classes that are related to a db?我应该如何创建与数据库相关的类?
【发布时间】:2012-05-05 01:54:19
【问题描述】:

我猜标题不是很清楚,但我想做的是:

我正在使用 .net 框架 3.5 和一个 asp.net 网络应用程序。

我的数据库中有 2 个表:

tb_provider():
provider_id
提供者名称

tb_需求:
需求ID(PK)
需求名称
cod_provider(fk)

它是一对多的关系。

1 个提供者可能有很多需求
1 个需求仅与一个提供商相关。

所以我创建了这些类:

    public class ProviderVO
{
    public int Id_Provider{ get; set; }
    public string Name_Provider { get; set; }
    public List<DemandVO> List_Demand{ get; set; }
}

public class DemandVO
{
    public int Id_Demand{ get; set; }
    public string Name_Demand{ get; set; }
    public ProviderVO objProvider{ get; set; }
}

我在提供者类中放置了一个需求列表,这样我就可以获得与该提供者相关的所有需求。

需求类也是如此。我试图将需求与其提供者对象联系起来。

我想对了吗?

所有这一切的原因是因为我无法在带有 linq 到实体查询的网格视图中加上提供者的需求。

所以我认为我的课程可能有问题。

谢谢!

【问题讨论】:

  • 你是否使用实体框架?
  • 我在单独的层上使用它来连接数据库。然后我使用其他类进行插入,更新等等

标签: asp.net .net entity-framework orm linq-to-entities


【解决方案1】:

实际上整个代码都是错误的。 .NET 3.5 仅支持 EFv1,而 EFv1 没有内置对 POCO 类的支持。解决问题的最佳方法是添加 EDMX 文件并让 VS 生成可与 EFv1 一起使用的类。这些类将从EntityObject 继承并包含许多附加属性。此外,您的导航属性将使用不同的类型。

另一种解决方案是升级到 .NET 4 和 EFv4+,您的代码在正确映射后可以正常工作。

【讨论】:

  • 所以我想要的最好的映射方式是使用生成的类而不是我的 pocos?
  • 不是最好的方法,而是 EFv1 的唯一直接方法。或者,您可以查看旧的 POCO adapter project 以获取 EFv1。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-05
  • 2011-10-13
  • 2021-07-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多