Entity Framework 6.0 Tutorials(8):Custom Code-First Conventions

Custom Code-First Conventions:

Code-First has a set of default behaviors for the models that are referred to as conventions. EF 6 provides the ability to define your own custom conventions which will be the default behavior for your models.

There are two main types of Conventions, Configuration Conventions and Model Conventions.

Configuration Conventions:

Configuration Conventions are a way to configure entities without overriding the default behavior provided in the Fluent API. You can define a configuration convention inside your OnModelCreating event or in a custom Convention Class, similar to how you would define normal entity mappings with the Fluent API.

For example, you can define a primary key of an entity that has property named {entity name} _ID, e.g. Student_ID property of Student entity will be primary key:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder
        .Properties()
        .Where(p => p.Name == p.DeclaringType.Name + "_ID")
        .Configure(p => p.IsKey());

    base.OnModelCreating(modelBuilder);
}

The following example shows how to set the string length of the Description property in all entities:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
        modelBuilder
            .Properties()
            .Where(p => p.Name == "Description")
            .Configure(p => p.HasMaxLength(200));

    base.OnModelCreating(modelBuilder);
}

You can also define custom class for this convention by deriving the Convention class as shown below:

public class PKConvention : Convention
{
    public PKConvention()
    {
        .Properties()
        .Where(p => p.Name == p.DeclaringType.Name + "_ID")
        .Configure(p => p.IsKey());

    }
}

Configure custom convention as shown below:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Conventions.Add<PKConvention>();
}

Model Conventions:

Model Conventions are based on the underlying model metadata. There are conventions for both CSDL and SSDL. Create a class that implements IConceptualModelConvention from CSDL conventions and implement IStoreModelConvention for SSDL convention.

Visit codeplex documentation for more information.

Download code-first sample project for custom conventions demo.

时间: 2024-10-12 16:27:26

Entity Framework 6.0 Tutorials(8):Custom Code-First Conventions的相关文章

Entity Framework 6.0 Tutorials(1):Introduction

以下系统文章为EF6.0知识的介绍,本章是第一篇 原文地址:http://www.entityframeworktutorial.net/entityframework6/introduction.aspx ------------------------------------------------------------------------------------------------------------- Entity Framework 6.0 Introduction: W

Entity Framework 6.0 Tutorials(4):Database Command Logging

Database Command Logging: In this section, you will learn how to log commands & queries sent to the database by Entity Framework. Prior to EF 6, we used the database tracing tool or third party tracing utility to trace database queries and commands s

Entity Framework 6.0 Tutorials(2):Async query and Save

Async query and Save: You can take advantage of asynchronous execution of .Net 4.5 with Entity Framework. EF 6 has the ability to execute a query and command asynchronously using DbContext. Let's see how to execute asynchronous query first and then w

Entity Framework 6.0 Tutorials(6):Transaction support

Transaction support: Entity Framework by default wraps Insert, Update or Delete operation in a transaction, whenever you execute SaveChanges(). EF starts a new transaction for each operation and completes the transaction when the operation finishes.

Entity Framework 6.0 Tutorials(10):Index Attribute

Index Attribute: Entity Framework 6 provides Index attribute to create Index on a particular column in the database as shown below: class Student { public Student() { } public int Student_ID { get; set; } public string StudentName { get; set; } [Inde

Entity Framework 6.0 Tutorials(3):Code-based Configuration

Code-based Configuration: Entity Framework 6 has introduced code based configuration. Now, you can configure Entity Framework related settings using the code which had been previously configured in the <entityframework> section of the app.config. Ho

Entity Framework 6.0 Tutorials(9):Stored Procedure Mapping

Code First - Insert, Update, Delete Stored Procedure Mapping: Entity Framework 6 Code-First provides the ability to create and use a stored procedure for add, update, and delete operations. This was not possible in the previous versions of Entity Fra

Entity Framework 6.0 Tutorials(11):Download Sample Project

Download Sample Project: Download a sample project for Entity Framework 6 Database-First model below. Download a sample project for Entity Framework 6 CodeFirst-First below.  These sample projects already include the SchoolDB.mdf file required for th

Entity Framework 6.0 Tutorials(5):Command Interception

Interception: Here, you will learn how to intercept EF when it executes database commands. EF 6 provides the ability to intercept the context using IDbCommandInterceptor before and after it performs the ExecuteNonQuery, ExecuteScalar, ExecuteReader o