1

POCOオブジェクト用にこのような基本クラスがあります

 public abstract class BASE
    {
        protected BASE()
        {
            Created = DateTime.UtcNow;
            Modified = Created;

        }

        public int id { get; set; }
        public DateTime Created { get; set; }
        public DateTime Modified { get; set; }
        [MaxLength(50)]
        public string CreatedBy { get; set; }
        [MaxLength(50)]
        public string ModifiedBy { get; set; }
    }

私がやりたいのは、流暢な API で「MaxLength(50)」属性を設定することです。

しかし、私がこれをContext.ModelCreating

modelBuilder.Entity<BASE>().Property(p => p.CreatedBy).HasMaxLength(50);
modelBuilder.Entity<BASE>().Property(p => p.ModifiedBy).HasMaxLength(50);

次に、「BASEs」テーブルがデータベースに生成されます-これは避けたいです。

Fluent API でこれらの制約を設定できるようにするには、何が欠けていますか?

4

2 に答える 2

1

を使用EntityTypeConfiguration<TEntity>して最大長を構成できます。

プロパティをマップする基本クラスを作成しBASEます。

public class MyEntityMap<TEntity> : EntityTypeConfiguration<TEntity>
    where TEntity : BASE
{
    public MyEntityMap()
    {
        Property(p => p.CreatedBy).HasMaxLength(50);
        Property(p => p.CreatedBy).HasMaxLength(50);
    }
}

次にMyEntityMap<TEntity>、派生クラスごとに作成します。

public class DerivedMap : MyEntityMap<Derived>
{
    public DerivedMap()
    {
        //mappings
    }
}

modelBuilder.Configurations.Add(new DerivedMap());
于 2012-09-07T11:30:50.670 に答える