代码之家  ›  专栏  ›  技术社区  ›  Jeremy

从Linq DataContexts(DBML)中删除架构

  •  2
  • Jeremy  · 技术社区  · 14 年前

    将存储过程添加到Linq DataContext时,默认情况下,Visual Studio会在存储过程前面加上它所在的SQL架构。有什么办法阻止这一切吗?在我们的环境中,存储过程可能会随着时间的推移而移动到其他模式,并且我们将根据用于连接的SQL用户默认该模式。我是否必须手动执行此操作,或者是否可以以某种方式关闭模式前缀?

    1 回复  |  直到 13 年前
        1
  •  1
  •   Kirk Broadhurst    13 年前

    似乎没有任何方法可以使用设计器从LINQ到SQL映射的存储过程中删除架构。所有进程都被映射,包括它们的模式名,这对于大多数应用程序来说可能是件好事。和大多数linq-to-sql一样,更改数据库也会带来危险。需要Linq to SQL DBML更新和重建的数据库更改太多。

    更深入地挖掘,模式名存储在备份中 dbml XML文件,然后包含在生成的 designer.cs 包含调用的函数/方法的文件。

    // dbml
    <Function Name="dbo.MyProc" Method="MyProc">
    
    // designer.cs
    [global::System.Data.Linq.Mapping.FunctionAttribute(Name="dbo.MyProc")]
    public int MyProc()
    

    如果手动编辑 数据库管理语言 XML文件要删除Visual Studio中的架构保存,代码将按如下方式重新生成:

    // changed dbml - removed the dbo schema
    <Function Name="MyProc" Method="MyProc">
    
    // the resultant generated code in designer.cs
    [global::System.Data.Linq.Mapping.FunctionAttribute()]
    public int MyProc()
    

    它为我的帐户工作,以dbo作为默认模式登录。我把测试留给你。

    这可能是一个可行的解决方案——可视化设计器仍然这样工作,可以添加其他项等,而不破坏无模式函数,并且函数本身不会导致设计器抱怨。祝你好运!