Chapter 8 – Working with Relational Data Using the Entity Framework
Which .NET data provider would you use to work with Microsoft Access .MDB database files?
.NET Framework Data Provider for OLE DB.
Which .NET data provider would you use to work with Microsoft SQL Server 2012 Express Edition?
.NET Framework Data Provider for SQL Server.
What must you do with a
DbConnection
variable before executing aDbCommand
?Ensure that its state is open by calling the
Open()
method.When would you use the
CommandBehavior.SequentialAccess
property?This option provides a way for a
DbDataReader
class to handle rows that contain columns with BLOBs (binary large objects), such as videos and images, by not loading the entire row at once and instead loading one column at a time, allowing skipping of columns, and reading the BLOB data as a stream.ADO.NET instead of Entity Framework?
You would use classic ADO.NET instead of Entity Framework when you need the best performance, when most data access must use stored procedures, and when maintaining legacy code written using classic ADO.NET.
When defining a
DbContext
class, what type would you use for the property that represents a table, for example, theProducts
property of a Northwind context?DbSet<T>
, whereT
is the entity type, for example,Product
.What are the EF conventions for primary keys?
The property named
ID
orClassNameID
is assumed to be the primary key. If the type of that property is any of the following, then the property is also marked as being anIDENTITY
column:tinyint
,smallint
,int
,bigint
,guid
.When would you use an annotation attribute in an entity class?
You would use an annotation attribute in an entity class when the conventions cannot work out the correct mapping between the classes and tables. For example, if a class name does not match a table name or a property name does not match a column name.
Why might you choose fluent API in preference to annotation attributes?
You might choose fluent API in preference to annotation attributes when the conventions cannot work out the correct mapping between the classes and tables, and you do not want to use annotation attributes because you want to keep your entity classes clean and free from extraneous code.
What is the difference between Database-First and Code-First in EF6?
Database-First creates a design-time file with the EDMX that contains XML files that define the conceptual, storage, and mappings between the two. These XML files must be kept synchronized with future changes to the classes and tables. Code-First does not need a design-time EDMX file. Instead, a combination of conventions, annotation attributes, and fluent API is used to define the conceptual storage and mappings between the two. Code-First is more difficult to learn in the short term but it is more manageable in the long term which is why Entity Framework Core 1.0 drops support for design-time EDMX files.