.net - 多对多映射中的父键列类型更改

我有一个联接表,其中原始表是数字类型,联接表键列是字符串类型。我试图避免做出必要的遗留决定,以最大程度地减少工作范围内的风险。

HasManyToMany<Attachment>(x => x.Attachments)
  .Table("ObjectAttachments")
  .ParentKeyColumn("ObjectId")
  .ChildKeyColumn("AttachmentId")
  .Fetch.Select()
  .LazyLoad()
  .AsBag();

所属类对标识符使用长(数字)类型,而联接表对对象标识符使用字符串类型。我该如何映射它以动态更改数据类型?有什么我可以用来拦截并进行转换的东西吗?

也许我可以通过提供更多背景知识来开启讨论。表关系可以这样看:

设备-(r1)-对象附件-(r2)-附件
  • r1由设备定义。Id= ObjectAttachments .Object_Id和 ObjectAttachments .Class ='Equipment'
  • r2由 ObjectAttachments .Attachment_Id = 附件 .Attachment_Id
  • 定义

    让我陷入困境的是设备 .Id是整数数据类型,而 ObjectAttachments .Object_Id是字符串

    更新:这是我现在要进行的工作-我为附件创建了一个单独的存储库,并创建了一个引入联接表的映射。存储库要求我将设备标识符转换为字符串。这不是我想要的,但现在可以使用。该 map 如下所示:
    Table("Attachments");
    Id(x => x.Id);
    Map(x => x.Name);
    Map(x => x.Description);
    Map(x => x.MimeType);
    Map(x => x.Size);
    Map(x => x.Date);
    Map(x => x.Content).LazyLoad();
    Join("ObjectAttachments", join =>
        {
            join.KeyColumn("Id");
            join.Map(x => x.ObjectId);
        });
    

    最佳答案

    一种解决方案是在表的字符串ID中添加额外的列,并使用公式将字符串ID转换为正确的数字类型。
    这将数据库的问题限制在数据库中,而不是让它渗入代码中。

    https://stackoverflow.com/questions/2479534/

    相关文章:

    svg - 扩展Zedgraph以生产SVG

    django - 在templatetags之间传递上下文,Django

    .net - 将.NET程序集移离应用程序基本目录?

    asp.net - 如何在 Web 应用程序中对调用 Web 服务的 Windows Mobile

    cocoa-touch - 使用 beginAnimations 后如何停止动画?

    path - 如何在贝塞尔路径上进行几何高级操作?

    asp.net - 跨子域的ASP.NET MVC session

    spring - 如何在库的上下文中实例化 Spring?

    ruby-on-rails - Rails 3发布后对Rails 2的支持

    rest - 在RESTful架构中实现类似批处理操作的最佳方法?