0

我正在编写一个 MVC5 C# Internet 应用程序,我有一个名为的类MapCompany和一个分类为MapLocation.

每个MapCompany都有一个列表MapCompany's。我的问题是,对于上下文类,我应该只拥有 aDbSet<MapCompany>并添加MapLocations到特定的MapCompany,还是应该同时拥有 aDbSet<MapCompany>和 a DbSet<MapLocation>

编辑

以下是有关该应用程序的一些信息:

  1. 每个 MapCompany 可以有许多 MapLocations ~5-25
  2. 我希望能够通过其 ID 访问任何 MapLocation

因为我希望能够通过其 id 访问每个 MapLocation,如果只有一个DbSet<MapCompany>,是否会有很多数据库搜索,因为我必须搜索每个 MapCompany 才能通过其 id 找到 MapLocation?

由于数据库搜索的增加,每个都有一个 DbSet 会更经济吗?另外,这会使数据库变得更大吗?

无论哪种方式,每个 MapCompany 都需要有许多 MapLocations,并且我需要能够通过其自己的 id 有效地检索任何对象。

有了以上信息,我对是否应该为每个对象编写一个 DbSet 很感兴趣。

4

3 回答 3

0

我建议您对数据层使用存储库模式。

http://msdn.microsoft.com/en-us/library/ff649690.aspx

如果您不希望每个 MapCompany 有大量地图位置记录,我也会在您的两个模型之间建立关系。否则,返回 id 列表而不是模型可能更理想。

在不了解您的应用程序的情况下很难说。

于 2014-07-18T06:24:19.400 回答
0

如建议的那样,您需要使用存储库模式...尝试在存储库模式上检查此示例:

http://www.asp.net/mvc/tutorials/getting-started-with-ef-5-using-mvc-4/implementing-the-repository-and-unit-of-work-patterns-in-an- asp-net-mvc-应用程序

于 2014-07-18T15:02:32.127 回答
0

如果您在这些实体之间有外键关系。

public class MapCompany
{
    public int Id { get; set; }
    public ICollection<MapLocation> MapLocations { get; set; } // foreign key
}
public class MapLocation
{
    public int Id { get; set; }
    public int MapCompanyId { get; set; } // foreign key
    public MapCompany MapCompany { get; set; } // foreign key
}

只有 没关系,DbSet<MyCompany>由于MapLocation外键关系,数据库上仍然会生成 。

如果你也想拥有DbSet<MapLocation>,那也没关系。

如果你没有DbSet<MapLocation>,但想直接访问它而不MyCompany先检索实体,你可以这样做。

using (var context = new MyDbContext())
{
    var mapLocation = context.Set<MapLocation>().Find(1);
}
于 2014-07-18T18:25:21.953 回答