EF 5中的可插入约定?

时间:2012-09-12 17:19:59

标签: .net entity-framework entity-framework-5

从EF 5版本中删除了可插入约定,我在预发行版中看到了吗?寻找一种强制ef代码的方法按惯例使用datetime2,因此不需要显式映射每个实体的每一列。

2 个答案:

答案 0 :(得分:2)

遇到了类似的问题。我有一个与您的BaseEntity类似的通用存储库。

public abstract class BaseEntity
{
    public int Id { get; set; }
    public DateTime Created { get; set; }
    public DateTime Updated { get; set; } 
}

然后每个实体都是从基础派生的。

public class MyEntity: BaseEntity
{
    public string Name{ get; set; }
    public int prop1 { get; set; }
    public int prop2 { get; set; }
}

我最终使用columm属性设置了BaseEntity的Created和Updated属性,如下所示:

public abstract class BaseEntity
{
    [Key, Column(Order = 0)]
    public int Id { get; set; }
    [Column(TypeName = "datetime2")]
    public DateTime Created { get; set; }
    [Column(TypeName = "datetime2")]
    public DateTime Updated { get; set; } 
}

我在(http://dreadjr.blogspot.com/2012/09/entity-framework-5-code-first-datetime2.html)查看了您的解决方案,它看起来也很好,但它需要有一个每个实体的特定配置类。无论如何,我想我会和你分享这个。

答案 1 :(得分:0)

结束创建EntityTypeConfiguration的派生类。

public class CustomEntityTypeConfiguration<T> : EntityTypeConfiguration<T> where T : EntityBase
{
    public TEntityTypeConfiguration()
    {
        this.Property(t => t.CreatedDate).HasColumnType("datetime2");
    }
}

然后,每个实体配置都从此继承而不是EntityTypeConfiguration。