在lambda表达式中转换对象

时间:2014-10-29 19:39:13

标签: c# entity-framework lambda mappers

我正在使用EntityTypeConfiguration映射我的数据库。

问题是,类T_DOC_GENERIC继承了T_DOC,当我设置我的关系WithMany时,他期望一个对象T_DOC_GENERIC,他将其声明为T_DOC。

public class T_DOC_GENERICMapper : EntityTypeConfiguration<T_DOC_GENERIC>
    {
        T_DOC_GENERICMapper()
        { 
            this.ToTable("T_DOC");
            this.HasKey(tDoc => tDoc.ID);
            this.HasOptional(tDoc => tDoc.T_TYPE)
                .WithMany(tType =>  tType.T_DOC)
                .HasForeignKey(tDoc => tDoc.COD_TYPE);
        }
    }

无法隐式转换类型&#39; System.Collections.Generic.ICollection&lt; Protocol.Models.BaseEntities.T_DOC&gt;&#39; to&#39; System.Collections.Generic.ICollection&lt; Protocol.Models.BaseEntities.GenericsEntities.T_DOC_GENERIC&gt;&#39;。存在显式转换(您是否缺少演员?)D:\ PortalProtocolo \ Models \ Mappers \ GenericsMappers \ T_DOC_GENERIC.cs

有一种方法可以在lambda表达式中进行转换吗?

我尝试了一个像.WithMany((T_DOC)​​tType =&gt; tType.T_DOC)​​的显式演员,但我没有想法如何!

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

T_DOC类中编写转换器以从T_DOC_GENERIC转换/映射到T_DOC(返回类型)以执行此转换:

public T_DOC_GENERIC ConvertToGeneric(T_DOC source)
{
    T_DOC_GENERIC destination = new T_DOC_GENERIC(){};

    /* Map T_DOC source to T_DOC_GENERIC destination here */

    return T_DOC_GENERIC;
}

您可以将其添加到现有类中,或者根据需要将其设置为静态。