C# · 12月 30, 2021

c# – 流畅的nHibernate – 映射一个字符串列表

我有一个这样的模型(简化) public class Post{ public string ID { get; set; } public string Title { get; set; } public string Body { get; set; } public string AuthorName { get; set; } public List<string> Attachments { get; set; }} @H_404_4@在我的数据库中,我有一个Post表和一个PostAttachment表

@H_404_4@帖子附件表有2列:

@H_404_4@帖子ID
AttachmentKey

@H_404_4@(这些的基础是将附件上传到amazon s3,所以AttachmentKey是s3键)

@H_404_4@我想做的是将AttachmentKey映射到返回/插入的Post对象的列表…

@H_404_4@我该怎么做呢?

解决方法 您可能需要一个围绕字符串的类型,如果只能生成一个表名.像List这样的东西在您的应用程序中可能更有意义.我确定你可以深入挖掘并直接映射到字符串,如果你需要. @H_404_4@从那里,您可以从HasMany映射和指向您的表格的外键开始,即

HasMany (o => o.PostAttachments).ForeignKeyConstraintName (“FK_Attachment_Post”); @H_404_4@我认为默认情况下,这将在表中查找一个post_ID列(不需要在附件对象上显示),我确定如果需要,还有一个方法.

@H_404_4@您也可能需要在映射中使用.Inverse(),具体取决于您希望保存帖子附件的方式.

@H_404_4@编辑:看完diego的帖子后,我认为上述可能只是工作,如果PostAttachments是字符串列表.我以前流畅的使用了他发布的方法,我很确定HasMany默认映射到一个nhibernate包.您可能需要在映射中指定列名称以使用现有的表.