2013-06-13 4 views
0

У меня есть набор сущностей, который выглядит, как это, когда я печатаю его на консоль:Найти размер EntitySet?

EntitySet {entityContext: resource_dbEntities, _expression: undefined, elementType: function, person: function, createNew:function…} 

_defaultType: function person(){ 
_expression: EntitySetExpression 

collectionName: "person" 

createNew: function person(){ 
elementType: function person(){ 
entityContext: resource_dbEntities 

eventHandlers: undefined 

name: "person" 

person: function person(){ 
roles: undefined 

stateManager: EntityStateManager 

tableName: "person" 

tableOptions: undefined 

__proto__: EntitySet 

Есть ли способ, чтобы узнать, сколько элементов в EntitySet? Я не уверен, что он заселен, но я не уверен, как проверить.

Что-то вроде "myEntitySet.size"?

+0

Вы пытаетесь выяснить, сколько строк в таблице содержится в базе данных или сколько экземпляров (объектов) хранится локально в контексте? – moranlf

+0

Последний. Хотя они должны быть одинаковыми, правильно - поскольку база данных заполняет контекст ... – AllieCat

+0

Они не то же самое. Да, контекст заполняется базой данных, но только с результатами ваших запросов. Обычно запрос не извлекает все строки из таблицы. Вы также можете заполнить контекст объектами, созданными в приложении. Они будут добавлены только в db, когда вы вызываете «SaveChagnes()». Итак, вы хотите узнать количество строк в таблице db или количество лиц типа, которые отслеживаются контекстом? – moranlf

ответ

0

Если вы все равно запрашиваете всю базу данных, как вы упомянули в своем комментарии, вы можете обратиться к счету DbSet, хотя он будет извлекать все строки из базы данных.

static void Main(string[] args) 
    { 
     using (var context = new EntityContext()) 
     { 
      context.Entities.Add(new MyEntity()); 
      context.Entities.Add(new MyEntity()); 
      var myEntityCount = context.Entities.Count(); 
      Console.WriteLine("The context now tracks {0} entities", context.Entities.Local.Count); 
      context.SaveChanges(); 
     } 

     using (var context = new EntityContext()) 
     { 
      Console.WriteLine("The db had {0} entities when I queried it", context.Entities.Count()); 
      context.SaveChanges(); 
     } 
    } 

class MyEntity 
{ 
    public int MyEntityId { get; private set; } 
} 

class EntityContext:DbContext 
{ 
    public DbSet<MyEntity> Entities { get; set; } 
} 

С большим количеством данных в вашей БД, вы не хотели бы, чтобы сделать это, и вам придется прибегнуть к написанию SQL вернуть только количество таблицы, не извлекая все.