我有这个型号:
我想添加一个新的Autor,如下所示:
class Program
{
static void Main(string[] args)
{
try
{
AutorServiceClient service = new AutorServiceClient();
LivroContract[] livros = {
new LivroContract { id_tipo = 1, nome_livro = "Asp.Net MVC 5" },
new LivroContract { id_tipo = 1, nome_livro = "Asp.Net Entity Framework" }
};
AutorContract autorContract = new AutorContract()
{
nome_autor = "Novo Autor",
Livros = livros
};
if (service.Add(autorContract))
Console.WriteLine("Adicionado com Sucesso");
}
catch (Exception)
{
Console.WriteLine("Erro !!!");
}
}
}
我的Autor类有一个嵌套的Livro集合,我想插入一个新的Autor及其各自的Livro实体。
以下是我的数据访问代码的一部分,用于插入:
public class AutorDA
{
private readonly BibliotecaEntities _context;
private readonly DbSet<Autor> _dbSet;
public AutorDA()
{
_context = new BibliotecaEntities();
_dbSet = _context.Set<Autor>();
Mapping();
}
public void Mapping()
{
Mapper.Initialize(cfg =>
{
cfg.CreateMap<Autor, AutorDTO>();
cfg.CreateMap<AutorDTO, Autor>();
cfg.CreateMap<ICollection<Autor>, IEnumerable<AutorDTO>>();
cfg.CreateMap<IEnumerable<AutorDTO>, ICollection<Autor>>();
cfg.CreateMap<Biblioteca, BibliotecaDTO>();
cfg.CreateMap<BibliotecaDTO, Biblioteca>();
cfg.CreateMap<ICollection<Biblioteca>, IEnumerable<BibliotecaDTO>>();
cfg.CreateMap<IEnumerable<BibliotecaDTO>, ICollection<Biblioteca>>();
cfg.CreateMap<Livro, LivroDTO>();
cfg.CreateMap<LivroDTO, Livro>();
cfg.CreateMap<ICollection<Livro>, IEnumerable<LivroDTO>>();
cfg.CreateMap<IEnumerable<LivroDTO>, ICollection<Livro>>();
cfg.CreateMap<Tipo_Livro, TipoLivroDTO>();
cfg.CreateMap<TipoLivroDTO, Tipo_Livro>();
cfg.CreateMap<ICollection<Tipo_Livro>, IEnumerable<TipoLivroDTO>>();
cfg.CreateMap<IEnumerable<TipoLivroDTO>, ICollection<Tipo_Livro>>();
});
}
public bool Add(AutorDTO dto)
{
try
{
Mapping();
Autor autor = Mapper.Map<Autor>(dto);
_dbSet.Add(autor);
_context.SaveChanges();
return true;
}
catch (Exception ex)
{
throw ex;
}
}
....
这是我的DTO:
public class AutorDTO
{
public int id { get; set; }
public string nome_autor { get; set; }
public IEnumerable<LivroDTO> Livros { get; set; }
}
public class LivroDTO
{
public int id { get; set; }
public int id_tipo { get; set; }
public string nome_livro { get; set; }
public ICollection<AutorDTO> Autores { get; set; }
public ICollection<BibliotecaDTO> Bibliotecas { get; set; }
public TipoLivroDTO TipoLivro { get; set; }
}
我知道这里有问题,但我不知道是什么......我正在尝试插入Autor和几个Livros实体,但我不知道如何使用AutoMapper和EF。
但是使用此代码,我只插入Autor。
所以,我有两种情况我不知道怎么做:
我如何将AutoMapper配置为上述两种情况?
最后,我的最后一个问题是:
对于我们有一个主实体的情况,有什么更好的方法,主实体有一个或多个子实体(1:n / n:n)?
插入/更新simultanneosly所有这些实体是一个好主意,还是一个坏主意?如果这是一个坏主意,那么插入主类及其关系的最佳方法是什么?
我们可以看到,我的Livro实体还有其他子关系,但我只想使用Autor和Livro。我需要映射所有模型/实体才能使用这两个模型/实体吗?
感谢。