2015-08-31 2 views
1
public DbSet<Lecture> Lectures{ get; set; } 

Означает ли это название недвижимости вообще? Кажется, что, если я хочу использовать модель, я использую «Лекцию». Сгенерированная таблица - это всего лишь множественное число всего, что находится в <>, например, если я правильно понимаю, я могу изменить «Лекции» на «Лепреконы», и моя таблица будет по-прежнему называться «Лекции» на основе <Lecture>, и я буду использовать context.Lectures для выбора от него. Имеет ли название свойства какое-либо значение?Любая точка для названия свойства DbSet?

Я не нашел ответы в этом tutorial или на msdn.

Редактирование: при дальнейшем тестировании - имя таблицы db основано на имени модели в угловых скобках, но для фактического выбора из db (в коде C#) используется имя свойства, указанное в свойстве свойства DbSet. Еще хотелось бы услышать, как это работает в деталях.

+0

Свойства используется для доступа к соответствующему 'DbSet', но его имя ничего в отображении не влияет. – haim770

ответ

2

Entity Framework строит модель базы данных, где каждый класс/модель представляет собой entity type, и каждый DbSet представляет собой набор объектов одного типа. Когда вы объявляете свойство DbSet<T> в своем DbContext, которое сообщает EF, чтобы включить класс типа T в качестве одного из типов сущностей, и он также автоматически включает любые другие связанные типы (например, свойства навигации) в графе объектов.

Все это говорит о том, что название собственности, вероятно, не имеет значения. Фактически, вы можете использовать Fluent API, чтобы добавить типы сущностей, а не объявлять любые свойства DbSet, если хотите, и в этом случае вы должны использовать context.Set<T> для извлечения DbSet. Свойства действительно просто для удобства.

Может быть, это полезно, а также: https://msdn.microsoft.com/en-us/data/jj592675.aspx

0

DbSet соответствует таблице или представлению в вашей базе данных. Таким образом, вы будете использовать свой DbSet, чтобы получить доступ, создать, обновить, удалить и изменить данные таблицы.
Кстати, вы можете удалить эту конвенцию:

protected override void OnModelCreating(ModelBuilder modelBuilder) 
{  
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
} 
+0

Я понимаю, что делает DbSet - я спрашиваю, используется ли имя свойства где угодно, или все это происходит от типа (который, я полагаю, должен быть «DbSet " – VSO

Смежные вопросы