开始我是Expression和Func的新手。
我正在尝试避免在我的EF映射类中重复代码,而且我遇到了糟糕的数据库。
采用以下示例地图类:
<p class="premiumOnly" id="p">
<strong>Original bar admit date:</strong> 5/10/1974<br>
<strong>Colorado bar admit date:</strong> 5/10/1974
</p>
public class EntityMap : EntityTypeConfiguration<Entity>
{
public EntityMap()
{
Property(x => x.PropertyA.Property);
Property(x => x.PropertyB.Property);
}
}
和PropertyA
的类型相同,且属性很多
是否可以通过简单的方法重构此方法,在参数中传递PropertyB
或x => x.PropertyA
并执行PropertyB
之类的操作?如何 ?
方法可能是这样的:
Property(x => x. methodParemeter Property);
答案 0 :(得分:0)
您可以使用基类和接口。
<强>模型强>
public interface IEntity
{
string PropertyA { get; set; }
string PropertyB { get; set; }
}
public class EntityA : IEntity {
public string PropertyA { get; set; }
public string PropertyB { get; set; }
}
public class EntityB : IEntity
{
public string PropertyA { get; set; }
public string PropertyB { get; set; }
}
基础课程
public abstract class IEntityMap<T> : EntityTypeConfiguration<T> where T : class, IEntity
{
protected IEntityMap()
{
this.Property(x => x.PropertyA);
this.Property(x => x.PropertyB);
}
}
Mapper实施
使用DbContext
类型注册这些内容。
public class EntityAMap : IEntityMap<EntityA>
{
public EntityAMap() : base()
{
}
}
public class EntityBMap : IEntityMap<EntityB>
{
public EntityBMap() : base()
{
}
}