猿教程 Logo

Entity Framework自定义Code-First约定

Code-First对于被称为约定的模型具有一组默认行为。 EF 6提供了定义您自己的自定义约定的能力,这将是您的模型的默认行为。

有两种主要类型的约定,配置约定和模型约定。


配置约定:

配置约定是一种配置实体而不覆盖Fluent API中提供的默认行为的方法。 您可以在OnModelCreating事件或自定义约定类中定义配置约定,类似于如何使用Fluent API定义正常实体映射。

例如,您可以定义具有名为{entity name} _ID的属性的实体的主键,例如。 学生实体的Student_ID属性将是主键:

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

以下示例显示如何在所有实体中设置“说明”属性的字符串长度:

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

您还可以通过派生Convention类来为此约定定义自定义类,如下所示:

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

配置自定义约定如下所示:

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

模型约定:

模型约定基于基础模型元数据。 有CSDL和SSDL的约定。 创建一个从CSDL约定实现IConceptualModelConvention的类,并为SSDL约定实现IStoreModelConvention。

有关详细信息,请访问codeplex文档。


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/entity/custom-conventions-codefirst.html