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