3

Pluggableの規則はEF5リリースから削除されましたか?プレリリースで見ましたか?慣例によりefコードでdatetime2を使用するように強制する方法を探しているので、すべてのエンティティの各列を明示的にマップする必要はありません。

4

2 に答える 2

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)でソリューションを確認しましたが、見た目も問題ありませんが、特定の構成クラスが必要です。エンティティごとに。とにかく、これをあなたと共有しようと思いました。

于 2012-09-25T22:48:22.350 に答える
0

最終的に、EntityTypeConfigurationの派生クラスを作成しました。

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

次に、各エンティティ構成は、EntityTypeConfigurationではなくこれから継承します。

于 2012-09-12T17:39:03.910 に答える