将数据插入数据库中的两个表,并具有一到多关系的ASP.NET EF
我有一个发布
类
public class Post
{
public int Id {get; set;}
public string Title { get; set; }
public string Content { get; set; }
public List<string> GalleryPaths { get; set; }
}
和图像
class:
public class Image
{
public int Id { get; set; }
public string Path { get; set; }
public int PostId { get; set; }
[ForeignKey("PostId")]
public virtual Post Post { get; set; }
}
现在我想在我的帖子表中添加post
; 到我的图像表。
我的方法是:
public void Create(PostAddRequest model)
{
List<string> galleryImageFiles = new List<string>();
if (model.GalleryImages != null)
{
foreach (var item in model.GalleryImages)
{
galleryImageFiles.Add("/Content/img/uploads/" + Guid.NewGuid() + "_" + model.FeaturedImage.FileName);
item.SaveAs(System.Web.HttpContext.Current.Server.MapPath(galleryImageFiles.Last()));
}
}
var post = new Post()
{
Title = model.Title,
Content = model.Content,
};
model.FeaturedImage.SaveAs(System.Web.HttpContext.Current.Server.MapPath(featuredImageFile));
_unitOfWork.PostRepository.AddPost(post);
_unitOfWork.SaveChanges();
List<Image> gallery = new List<Image>();
foreach (var item in galleryImageFiles)
{
gallery.Add(new Image()
{
Path = item,
PostId = post.Id
});
}
_unitOfWork.ImageRepository.AddGallery(gallery);
_unitOfWork.SaveChanges();
}
我对EF有些新手,想知道是否有更有效的方法可以这样做,甚至消除了imageerepository的需求
?
I have a Post
class
public class Post
{
public int Id {get; set;}
public string Title { get; set; }
public string Content { get; set; }
public List<string> GalleryPaths { get; set; }
}
And an Image
class:
public class Image
{
public int Id { get; set; }
public string Path { get; set; }
public int PostId { get; set; }
[ForeignKey("PostId")]
public virtual Post Post { get; set; }
}
Now I want to add a Post
to my Posts table and a List<Image>
to my Images table.
My approach:
public void Create(PostAddRequest model)
{
List<string> galleryImageFiles = new List<string>();
if (model.GalleryImages != null)
{
foreach (var item in model.GalleryImages)
{
galleryImageFiles.Add("/Content/img/uploads/" + Guid.NewGuid() + "_" + model.FeaturedImage.FileName);
item.SaveAs(System.Web.HttpContext.Current.Server.MapPath(galleryImageFiles.Last()));
}
}
var post = new Post()
{
Title = model.Title,
Content = model.Content,
};
model.FeaturedImage.SaveAs(System.Web.HttpContext.Current.Server.MapPath(featuredImageFile));
_unitOfWork.PostRepository.AddPost(post);
_unitOfWork.SaveChanges();
List<Image> gallery = new List<Image>();
foreach (var item in galleryImageFiles)
{
gallery.Add(new Image()
{
Path = item,
PostId = post.Id
});
}
_unitOfWork.ImageRepository.AddGallery(gallery);
_unitOfWork.SaveChanges();
}
I'm kinda new to EF and was wondering if there was a more efficient way of doing this, or even removing the need of a ImageRepository
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我发现这个答案真的很有帮助
发布我自己的解决方案:
I found this answer really helpful
Posting my own solution: