【问题标题】:Multiple DBML files - type sharing?多个 DBML 文件 - 类型共享?
【发布时间】:2023-03-19 12:46:01
【问题描述】:

我有一个客户端/服务器应用程序,其中客户端和服务器有一些公共表(作为应用程序的一部分保持同步)。

我们目前将这些表(即 FileDetails)存储在 Shared.dbml 文件中。到目前为止,任何返回 FileDetails 集结果的存储过程都已放置在 Shared.dbml(即使它是仅服务器)SP 中。

我发布了 LINQ to SQL 支持 DBML 上的基类属性,我想也许我可以有一个 Server.dbml,它扩展了我的 Shared.dbml。理论上,这会给我一个包含所有共享表和 SP 以及服务器特定元素的 ServerDataContext。通常在 SQL 设计器中,我会将 SP 拖放到 FileDetails 表上以显示这是返回的内容,但是由于该类位于不同的 DBML 中,这是不可能的,并且在 XML 中我不认为 ElementType IdRef="1" 方法将起作用(因为 ref 需要指向另一个文件)

我发现我可以通过手动编辑 XML 返回类型来解决这个问题:

<Function Name="dbo.SELECT_FTS_FILES" Method="SELECT_FTS_FILES">
    <Return Type="ISingleResult&lt;DataTypes.FileDetails&gt;" />
</Function>

我的问题是,是否有人对这种方法有任何经验,并且可以向我指出更多资源?它是否有任何明显的缺点(除了手动 XML 更新)

欢迎所有反馈

【问题讨论】:

    标签: linq-to-sql datacontext


    【解决方案1】:

    您可以从您的数据上下文中继承。但是,在您的新数据上下文中,您将无法使用 linq 设计器,您必须手动编写代码。

    你有什么理由不想要两个数据上下文吗?

    继承和 LinqToSql 通常不能很好地结合在一起。如果你对它有很深的需求,你应该研究另一种 ORM,比如 NHibernate。

    【讨论】:

    • 我想让它们分开,只是为了确保编译检查客户端代码不能调用服务器的存储过程。我想有一点好处,也许不值得付出努力。
    • 不幸的是,Linq2Sql 不能很好地处理继承。目前没有“支持”的方式来做到这一点。如果您想要单个数据上下文,则需要将粘贴复制到单个 dbml xml 文件中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-06
    相关资源
    最近更新 更多