C# 自动映射WCF的多对多关系

C# 自动映射WCF的多对多关系,c#,entity-framework,wcf,mapping,automapper,C#,Entity Framework,Wcf,Mapping,Automapper,我已经在这个架构上工作了8个多小时。第一次使用WCF和AutoMapper。仍然没有解决办法 我已经阅读了关于这个主题的每一个问题,但无法为我的项目实现任何答案。因此,如果您发现这是一个重复的,请参考 我有一个包含83个表的数据库。他们中的许多人在某种程度上彼此相关,最相关的一个被称为Sicil。让我们只处理一个名为Access的相关表。我需要创建映射,这样每当我调用Sicil时,它都应该调用Access对象,反之亦然(没有如在中所述的StackOverFlow异常) 以下是Sicil实体: p

我已经在这个架构上工作了8个多小时。第一次使用WCF和AutoMapper。仍然没有解决办法

我已经阅读了关于这个主题的每一个问题,但无法为我的项目实现任何答案。因此,如果您发现这是一个重复的,请参考

我有一个包含83个表的数据库。他们中的许多人在某种程度上彼此相关,最相关的一个被称为Sicil。让我们只处理一个名为Access的相关表。我需要创建映射,这样每当我调用Sicil时,它都应该调用Access对象,反之亦然(没有如在中所述的StackOverFlow异常)

以下是Sicil实体:

public partial class Sicil
{
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
    public Sicil()
    {
        this.Access = new HashSet<Access>();
        // other collections...
    }

    public int Id { get; set; }
    public string Isim { get; set; }
    public string Soyad { get; set; }
    public int Firma { get; set; }
    public int Departmant { get; set; }
    public int Pozisyon { get; set; }
    public string Tc { get; set; }
    public string SGKNo { get; set; }
    public System.DateTime GirisTarihi { get; set; }
    public Nullable<System.DateTime> CikisTarihi { get; set; }
    public string SicilNo { get; set; }
    public string KanGrubu { get; set; }
    public string MobilTel { get; set; }
    public string EvTRel { get; set; }
    public string Tel2 { get; set; }
    public int Il { get; set; }
    public int Ilce { get; set; }
    public string Adres { get; set; }
    public bool Cinsiyet { get; set; }
    public string EMail { get; set; }
    public Nullable<System.DateTime> MuayneTarihi { get; set; }
    public Nullable<System.DateTime> SahaGirisTarihi { get; set; }
    public int MinorToplam { get; set; }
    public int MajorToplam { get; set; }
    public Nullable<System.DateTime> DogumTarihi { get; set; }
    public string Gorev { get; set; }
    public bool Aktif { get; set; }
    public byte[] Fotograf { get; set; }
    public string KartNo { get; set; }
    public string Sifre { get; set; }
    public string Yaka { get; set; }
    public string OKod1 { get; set; }
    public string OKod2 { get; set; }
    public string OKod3 { get; set; }
    public string OKod4 { get; set; }
    public string OKod5 { get; set; }
    public string OKod6 { get; set; }
    public string OKod7 { get; set; }
    public string OKod8 { get; set; }
    public string OKod9 { get; set; }
    public string OKod10 { get; set; }
    public string AyrilisNedeni { get; set; }
    public Nullable<bool> OFM { get; set; }
    public Nullable<System.DateTime> LastEditDate { get; set; }
    public Nullable<System.DateTime> CreationDate { get; set; }

    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
    public virtual ICollection<Access> Access { get; set; }
    // other collections...
}
访问:

[DataContract]
public partial class AccessDTO : Access
{
    [DataMember]
    public virtual SicilDTO SicilDto { get; set; }
    public AccessDTO()
    {
        SicilDto = new SicilDTO();
    }
}
西西尔:

[DataContract]
public partial class Sicil
{
    [DataMember]
    public int Id { get; set; }
    [DataMember]
    public string Isim { get; set; }
    [DataMember]
    public string Soyad { get; set; }
    [DataMember]
    public int Firma { get; set; }
    [DataMember]
    public int Departmant { get; set; }
    [DataMember]
    public int Pozisyon { get; set; }
    [DataMember]
    public string Tc { get; set; }
    [DataMember]
    public string SGKNo { get; set; }
    [DataMember]
    public System.DateTime GirisTarihi { get; set; }
    [DataMember]
    public Nullable<System.DateTime> CikisTarihi { get; set; }
    [DataMember]
    public string SicilNo { get; set; }
    [DataMember]
    public string KanGrubu { get; set; }
    [DataMember]
    public string MobilTel { get; set; }
    [DataMember]
    public string EvTRel { get; set; }
    [DataMember]
    public string Tel2 { get; set; }
    [DataMember]
    public int Il { get; set; }
    [DataMember]
    public int Ilce { get; set; }
    [DataMember]
    public string Adres { get; set; }
    [DataMember]
    public bool Cinsiyet { get; set; }
    [DataMember]
    public string EMail { get; set; }
    [DataMember]
    public Nullable<System.DateTime> MuayneTarihi { get; set; }
    [DataMember]
    public Nullable<System.DateTime> SahaGirisTarihi { get; set; }
    [DataMember]
    public int MinorToplam { get; set; }
    [DataMember]
    public int MajorToplam { get; set; }
    [DataMember]
    public Nullable<System.DateTime> DogumTarihi { get; set; }
    [DataMember]
    public string Gorev { get; set; }
    [DataMember]
    public bool Aktif { get; set; }
    [DataMember]
    public byte[] Fotograf { get; set; }
    [DataMember]
    public string KartNo { get; set; }
    [DataMember]
    public string Sifre { get; set; }
    [DataMember]
    public string Yaka { get; set; }
    [DataMember]
    public string OKod1 { get; set; }
    [DataMember]
    public string OKod2 { get; set; }
    [DataMember]
    public string OKod3 { get; set; }
    [DataMember]
    public string OKod4 { get; set; }
    [DataMember]
    public string OKod5 { get; set; }
    [DataMember]
    public string OKod6 { get; set; }
    [DataMember]
    public string OKod7 { get; set; }
    [DataMember]
    public string OKod8 { get; set; }
    [DataMember]
    public string OKod9 { get; set; }
    [DataMember]
    public string OKod10 { get; set; }
    [DataMember]
    public string AyrilisNedeni { get; set; }
    [DataMember]
    public Nullable<bool> OFM { get; set; }

    public Sicil()
    {
        Access = new HashSet<AccessDTO>();
    }

    [DataMember]
    public virtual ICollection<AccessDTO> Access { get; set; }        
}

没有相关的集合或对象,我得到的数据没有错误,但是项目应该像我提到的那样工作。希望我们能找到一个解决方案。

您如何将Hibernate与c#结合使用?这是否与相同?@tomredfern我试图标记映射,但出现了Hibernate映射。我会编辑的。@IvanStoev我没看到这个。我将尝试这里给出的解决方案,谢谢。可能与您如何将Hibernate与c#一起使用重复?这与@tomredfern不一样吗?我试图标记映射,但出现了Hibernate映射。我会编辑的。@IvanStoev我没看到这个。我将尝试那里给出的解决方案,谢谢。可能是重复的
[DataContract]
public partial class AccessDTO : Access
{
    [DataMember]
    public virtual SicilDTO SicilDto { get; set; }
    public AccessDTO()
    {
        SicilDto = new SicilDTO();
    }
}
[DataContract]
public partial class Sicil
{
    [DataMember]
    public int Id { get; set; }
    [DataMember]
    public string Isim { get; set; }
    [DataMember]
    public string Soyad { get; set; }
    [DataMember]
    public int Firma { get; set; }
    [DataMember]
    public int Departmant { get; set; }
    [DataMember]
    public int Pozisyon { get; set; }
    [DataMember]
    public string Tc { get; set; }
    [DataMember]
    public string SGKNo { get; set; }
    [DataMember]
    public System.DateTime GirisTarihi { get; set; }
    [DataMember]
    public Nullable<System.DateTime> CikisTarihi { get; set; }
    [DataMember]
    public string SicilNo { get; set; }
    [DataMember]
    public string KanGrubu { get; set; }
    [DataMember]
    public string MobilTel { get; set; }
    [DataMember]
    public string EvTRel { get; set; }
    [DataMember]
    public string Tel2 { get; set; }
    [DataMember]
    public int Il { get; set; }
    [DataMember]
    public int Ilce { get; set; }
    [DataMember]
    public string Adres { get; set; }
    [DataMember]
    public bool Cinsiyet { get; set; }
    [DataMember]
    public string EMail { get; set; }
    [DataMember]
    public Nullable<System.DateTime> MuayneTarihi { get; set; }
    [DataMember]
    public Nullable<System.DateTime> SahaGirisTarihi { get; set; }
    [DataMember]
    public int MinorToplam { get; set; }
    [DataMember]
    public int MajorToplam { get; set; }
    [DataMember]
    public Nullable<System.DateTime> DogumTarihi { get; set; }
    [DataMember]
    public string Gorev { get; set; }
    [DataMember]
    public bool Aktif { get; set; }
    [DataMember]
    public byte[] Fotograf { get; set; }
    [DataMember]
    public string KartNo { get; set; }
    [DataMember]
    public string Sifre { get; set; }
    [DataMember]
    public string Yaka { get; set; }
    [DataMember]
    public string OKod1 { get; set; }
    [DataMember]
    public string OKod2 { get; set; }
    [DataMember]
    public string OKod3 { get; set; }
    [DataMember]
    public string OKod4 { get; set; }
    [DataMember]
    public string OKod5 { get; set; }
    [DataMember]
    public string OKod6 { get; set; }
    [DataMember]
    public string OKod7 { get; set; }
    [DataMember]
    public string OKod8 { get; set; }
    [DataMember]
    public string OKod9 { get; set; }
    [DataMember]
    public string OKod10 { get; set; }
    [DataMember]
    public string AyrilisNedeni { get; set; }
    [DataMember]
    public Nullable<bool> OFM { get; set; }

    public Sicil()
    {
        Access = new HashSet<AccessDTO>();
    }

    [DataMember]
    public virtual ICollection<AccessDTO> Access { get; set; }        
}
[DataContract]
public partial class SicilDTO : Sicil
{
    [DataMember]
    public virtual ICollection<AccessDTO> Accessler { get; set; }
    public SicilDTO()
    {
        Accessler = new HashSet<AccessDTO>();
    }
}
cfg.CreateMap<Data.Access, Access>().ForMember(dest => dest.Sicil, opt => opt.MapFrom(src => src.Sicil)).PreserveReferences();

cfg.CreateMap<Access, Data.Access>().ForMember(dest => dest.LastEditDate, opt => opt.Ignore()).ForMember(dest => dest.CreationDate, opt => opt.Ignore());

cfg.CreateMap<Sicil, Data.Sicil>().ForMember(dest => dest.LastEditDate, opt => opt.Ignore()).ForMember(dest => dest.CreationDate, opt => opt.Ignore()).ForMember(dest => dest.Access, opt => opt.MapFrom(src => src.Access));

cfg.CreateMap<Data.Sicil, Sicil>().ForMember(dest => dest.Access, opt => opt.MapFrom(src => src.Access)); 
public Access IddenAccessGetir(int id)
    {
        var access = _dataServis.IddenAccessGetir(id);        
        var model = Mapper.Map<Access>(access); //throws exception
        return model;
    }
Error mapping types.

Mapping types:
Access -> Access
Data.Access -> DinibhDataService.Access

Type Map configuration:
Access -> Access
Data.Access -> DinibhDataService.Access

Property:
Sicil